﻿
    using System;
    using System.Collections.Generic;
    using System.Linq;
using System.Text;

    internal class ChineseSpellHelper
    {
        private static IDictionary<char, Func<int, bool>> m_baseDict = new Dictionary<char, Func<int, bool>>();
        private static readonly IDictionary<char, int[]> m_rareDict = new Dictionary<char, int[]>();

        static ChineseSpellHelper()
        {
            InitBaseDictionary();
            InitRareDictionary();
        }

        internal static char FindBaseDictionary(int ascii, char c)
        {
            foreach (char ch in m_baseDict.Keys)
            {
                if (m_baseDict[ch](ascii))
                {
                    return ch;
                }
            }
            return c;
        }

        internal static char FindRareDictionary(int ascii, char c)
        {
            foreach (char ch in m_rareDict.Keys)
            {
                if (m_rareDict[ch].Contains<int>(ascii))
                {
                    return ch;
                }
            }
            return c;
        }

        private static void InitBaseDictionary()
        {
            Dictionary<char, Func<int, bool>> dictionary = new Dictionary<char, Func<int, bool>>();
            dictionary.Add('A', s => (s >= -20319) && (s <= -20284));
            dictionary.Add('B', delegate (int s) {
                if (((s < -20283) || (s > -20226)) && ((s < -20063) || (s > -19970)))
                {
                    return (s >= -19807) && (s <= -19776);
                }
                return true;
            });
            dictionary.Add('C', delegate (int s) {
                if (((s < -19775) || (s > -19714)) && ((s < -19551) || (s > -19458)))
                {
                    return (s >= -19295) && (s <= -19219);
                }
                return true;
            });
            dictionary.Add('D', delegate (int s) {
                if (((s < -19218) || (s > -19202)) && ((s < -19039) || (s > -18946)))
                {
                    return (s >= -18783) && (s <= -18711);
                }
                return true;
            });
            dictionary.Add('E', s => ((s >= -18710) && (s <= -18690)) || (s == -18527));
            dictionary.Add('F', s => ((s >= -18526) && (s <= -18434)) || ((s >= -18271) && (s <= -18240)));
            dictionary.Add('G', s => ((s >= -18239) && (s <= -18178)) || ((s >= -18015) && (s <= -17923)));
            dictionary.Add('H', delegate (int s) {
                if (((s < -17759) || (s > -17666)) && (s != -17922))
                {
                    return (s >= -17503) && (s <= -17418);
                }
                return true;
            });
            dictionary.Add('J', delegate (int s) {
                if ((((s < -17417) || (s > -17410)) && ((s < -17247) || (s > -17154))) && (((s < -16991) || (s > -16832)) && ((s < -16735) || (s > -16642))))
                {
                    return (s >= -16480) && (s <= -16475);
                }
                return true;
            });
            dictionary.Add('K', s => ((s >= -16474) && (s <= -16386)) || ((s >= -16223) && (s <= -16213)));
            dictionary.Add('L', delegate (int s) {
                if (((s < -16212) || (s > -16130)) && ((s < -15967) || (s > -15874)))
                {
                    return (s >= -15711) && (s <= -15641);
                }
                return true;
            });
            dictionary.Add('M', delegate (int s) {
                if (((s < -15640) || (s > -15618)) && ((s < -15455) || (s > -15362)))
                {
                    return (s >= -15199) && (s <= -15166);
                }
                return true;
            });
            dictionary.Add('N', s => ((s >= -15165) && (s <= -15106)) || ((s >= -14943) && (s <= -14923)));
            dictionary.Add('O', s => (s >= -14922) && (s <= -14915));
            dictionary.Add('P', s => ((s >= -14914) && (s <= -14850)) || ((s >= -14687) && (s <= -14631)));
            dictionary.Add('Q', delegate (int s) {
                if (((s < -14630) || (s > -14528)) && ((s < -14431) || (s > -14338)))
                {
                    return (s >= -14175) && (s <= -14150);
                }
                return true;
            });
            dictionary.Add('R', s => (s >= -14149) && (s <= -14091));
            dictionary.Add('S', delegate (int s) {
                if ((((s < -14090) || (s > -14082)) && ((s < -13919) || (s > -13826))) && ((s < -13663) || (s > -13570)))
                {
                    return (s >= -13407) && (s <= -13319);
                }
                return true;
            });
            dictionary.Add('T', delegate (int s) {
                if (((s < -13318) || (s > -13314)) && ((s < -13151) || (s > -13058)))
                {
                    return (s >= -12895) && (s <= -12839);
                }
                return true;
            });
            dictionary.Add('W', s => ((s >= -12838) && (s <= -12802)) || ((s >= -12639) && (s <= -12557)));
            dictionary.Add('X', delegate (int s) {
                if ((((s < -12556) || (s > -12546)) && ((s < -12383) || (s > -12290))) && ((s < -12127) || (s > -12034)))
                {
                    return (s >= -11871) && (s <= -11848);
                }
                return true;
            });
            dictionary.Add('Y', delegate (int s) {
                if ((((s < -11847) || (s > -11778)) && ((s < -11615) || (s > -11522))) && ((s < -11359) || (s > -11200)))
                {
                    return (s >= -11103) && (s <= -11056);
                }
                return true;
            });
            dictionary.Add('Z', delegate (int s) {
                if ((((s < -11055) || (s > -11010)) && ((s < -10847) || (s > -10754))) && ((s < -10591) || (s > -10498)))
                {
                    return (s >= -10335) && (s <= -10247);
                }
                return true;
            });
            m_baseDict = dictionary;
        }

        private static void InitRareDictionary()
        {
            m_rareDict.Add('A', new int[] { 
                -32426, -32332, -32269, -31882, -31865, -31751, -31598, -31378, -31365, -31344, -31340, -31323, -31098, -31091, -31055, -30987, 
                -30910, -30842, -30778, -30591, -30563, -30555, -30499, -30484, -30367, -30299, -30279, -30125, -30121, -29994, -29982, -29882, 
                -29846, -29813, -29778, -29732, -29467, -29460, -29373, -29346, -29236, -29211, -29101, -28453, -28334, -28240, -28231, -28075, 
                -28054, -27725, -27651, -27471, -27470, -27284, -27282, -27243, -27167, -26997, -26944, -26784, -26116, -25935, -25732, -25695, 
                -25380, -25374, -25275, -25151, -25017, -24717, -24623, -24466, -21881, -21647, -21176, -21151, -20619, -20355, -20342, -20143, 
                -20138, -20116, -19843, -19594, -19371, -19336, -19125, -17047, -16049, -15797, -15793, -15273, -14750, -14519, -14221, -14208, 
                -13938, -13740, -13502, -13248, -12670, -11917, -11684, -10919, -10673, -10606, -10605, -10397, -10382, -10124, -10111, -9844, 
                -9521, -9238, -9221, -9100, -8891, -8481, -8466, -8362, -8263, -8107, -8005, -7996, -7992, -7991, -7828, -7762, 
                -7699, -7466, -7462, -7104, -6846, -6840, -6693, -6568, -6463, -6456, -6415, -6329, -6064, -5976, -5903, -5809, 
                -5771, -5732, -5663, -5421, -5312, -5310, -5302, -5240, -5028, -5023, -4972, -4721, -4711, -4671, -4185, -4167, 
                -4147, -3993, -3898, -3765, -3764, -3590, -3511, -3448, -3332, -3231, -2717, -2486, -2409, -2384, -2357, -2193, 
                -2143, -2071, -2058, -1954, -1920, -1905, -1903, -1689, -1645, -1423, -895
             });
            m_rareDict.Add('B', new int[] { 
                -32437, -32430, -32364, -32363, -32355, -32312, -32303, -32301, -32296, -32292, -32285, -32178, -32148, -32144, -32138, -32106, 
                -32089, -32077, -32065, -32053, -32028, -32020, -32011, -31930, -31929, -31904, -31893, -31866, -31848, -31846, -31643, -31613, 
                -31537, -31500, -31498, -31319, -31292, -31247, -31239, -31140, -31138, -31128, -31074, -31025, -31019, -31001, -30988, -30872, 
                -30811, -30618, -30598, -30569, -30560, -30558, -30551, -30538, -30520, -30493, -30489, -30477, -30375, -30356, -30345, -30321, 
                -30290, -30258, -30236, -30214, -30211, -30142, -30131, -30126, -30112, -30078, -30068, -30060, -30005, -29826, -29800, -29797, 
                -29713, -29608, -29571, -29561, -29545, -29542, -29536, -29502, -29462, -29364, -29361, -29359, -29331, -29286, -29232, -29197, 
                -29037, -29008, -28996, -28992, -28987, -28986, -28979, -28971, -28961, -28945, -28944, -28859, -28839, -28807, -28788, -28782, 
                -28779, -28752, -28724, -28721, -28718, -28714, -28706, -28607, -28603, -28592, -28588, -28585, -28543, -28533, -28474, -28470, 
                -28465, -28426, -28298, -28219, -28068, -28055, -28051, -28048, -28027, -28013, -27991, -27982, -27965, -27958, -27943, -27918, 
                -27825, -27804, -27789, -27772, -27713, -27684, -27680, -27662, -27568, -27557, -27503, -27487, -27456, -27446, -27416, -27317, 
                -27316, -27300, -27293, -27283, -27170, -27068, -27045, -27039, -27013, -26998, -26974, -26967, -26945, -26942, -26940, -26936, 
                -26914, -26912, -26910, -26809, -26805, -26804, -26783, -26778, -26752, -26742, -26733, -26732, -26688, -26685, -26647, -26639, 
                -26421, -26255, -26242, -26231, -26152, -26127, -26008, -26007, -25957, -25912, -25888, -25878, -25871, -25779, -25759, -25735, 
                -25662, -25513, -25505, -25504, -25452, -25440, -25424, -25348, -25347, -25177, -25015, -25011, -24988, -24980, -24889, -24873, 
                -24865, -24683, -24647, -24626, -24625, -24620, -24584, -24483, -24473, -24412, -24411, -24410, -24396, -24380, -24371, -24355, 
                -24349, -24343, -24322, -21938, -21929, -21927, -21904, -21900, -21878, -21877, -21876, -21874, -21856, -21672, -21657, -21631, 
                -21614, -21436, -21418, -21407, -21403, -21399, -21346, -21136, -21101, -21100, -21094, -20917, -20882, -20873, -20859, -20664, 
                -20654, -20650, -20626, -20398, -20397, -20396, -20376, -20374, -20370, -20367, -20358, -20320, -20157, -20099, -19642, -19625, 
                -19575, -19390, -19311, -19118, -19088, -19078, -19050, -18874, -18828, -18822, -18803, -18788, -18623, -18616, -18613, -18575, 
                -18559, -18555, -18543, -18542, -18320, -18319, -18285, -18275, -18096, -18062, -18060, -18059, -18058, -18035, -18033, -17826, 
                -17824, -17817, -17794, -17585, -17563, -17542, -17541, -17535, -17517, -17505, -17340, -17332, -17316, -17261, -17250, -17073, 
                -17059, -17044, -17015, -17010, -16808, -16799, -16757, -16754, -16740, -16558, -16529, -16505, -16298, -16289, -16241, -16044, 
                -16040, -16022, -15985, -15983, -15743, -15542, -15534, -15527, -15526, -15522, -15521, -15520, -15456, -15262, -15246, -15204, 
                -15039, -15016, -14969, -14964, -14960, -14736, -14732, -14731, -14717, -14715, -14501, -14495, -14440, -14267, -14243, -14231, 
                -14223, -14187, -13924, -13922, -13755, -13746, -13736, -13699, -13470, -13448, -13427, -13423, -13411, -13223, -13173, -13159, 
                -13154, -12981, -12979, -12956, -12945, -12942, -12941, -12933, -12909, -12902, -12723, -12710, -12666, -12660, -12653, -12440, 
                -12434, -12391, -12152, -12149, -12141, -11966, -11958, -11935, -11930, -11881, -11706, -11702, -11701, -11692, -11688, -11673, 
                -11665, -11663, -11645, -11642, -11636, -11437, -11402, -11361, -11146, -11143, -10944, -10926, -10909, -10884, -10859, -10638, 
                -10624, -10420, -10365, -10339, -10160, -10146, -10136, -10131, -10108, -10096, -10064, -10045, -10030, -9917, -9912, -9901, 
                -9883, -9882, -9851, -9836, -9831, -9790, -9777, -9752, -9743, -9737, -9658, -9648, -9579, -9498, -9495, -9477, 
                -9475, -9407, -9395, -9383, -9346, -9333, -9267, -9266, -9264, -9248, -9152, -9141, -9140, -9008, -9000, -8982, 
                -8885, -8878, -8827, -8811, -8807, -8791, -8765, -8759, -8735, -8723, -8718, -8629, -8601, -8597, -8596, -8594, 
                -8592, -8591, -8523, -8477, -8464, -8377, -8374, -8316, -8315, -8301, -8295, -8293, -8270, -8255, -8254, -8231, 
                -8110, -8098, -8090, -8056, -8054, -8029, -7980, -7798, -7785, -7782, -7759, -7719, -7687, -7582, -7573, -7564, 
                -7536, -7533, -7528, -7484, -7464, -7443, -7355, -7353, -7349, -7333, -7332, -7315, -7307, -7261, -7239, -7190, 
                -7074, -7069, -7031, -6982, -6940, -6847, -6845, -6831, -6804, -6744, -6735, -6734, -6707, -6666, -6658, -6575, 
                -6562, -6546, -6543, -6469, -6466, -6444, -6433, -6412, -6336, -6317, -6303, -6206, -6195, -6173, -6075, -6067, 
                -6052, -6029, -6028, -6019, -5992, -5963, -5820, -5817, -5797, -5796, -5795, -5791, -5774, -5773, -5738, -5692, 
                -5666, -5653, -5540, -5514, -5498, -5453, -5452, -5426, -5414, -5378, -5214, -5129, -5051, -5020, -5016, -5005, 
                -4985, -4981, -4977, -4962, -4951, -4947, -4946, -4910, -4908, -4800, -4796, -4781, -4746, -4744, -4741, -4674, 
                -4651, -4644, -4633, -4541, -4448, -4433, -4400, -4397, -4385, -4384, -4375, -4270, -4268, -4261, -4246, -4245, 
                -4244, -4242, -4209, -4206, -4202, -4194, -4164, -4135, -4134, -4112, -4107, -4025, -4022, -4010, -4008, -3985, 
                -3973, -3919, -3906, -3897, -3878, -3775, -3773, -3771, -3770, -3737, -3736, -3709, -3691, -3677, -3674, -3667, 
                -3655, -3631, -3628, -3624, -3623, -3621, -3467, -3446, -3443, -3438, -3335, -3247, -3244, -3230, -3229, -3219, 
                -3216, -3208, -3191, -3186, -3185, -3171, -3114, -3111, -3093, -3081, -2985, -2952, -2941, -2927, -2925, -2908, 
                -2896, -2894, -2875, -2866, -2747, -2743, -2738, -2731, -2707, -2677, -2637, -2625, -2624, -2613, -2609, -2597, 
                -2462, -2461, -2445, -2379, -2355, -2351, -2307, -2238, -2227, -2223, -2172, -2168, -2156, -2137, -2119, -2110, 
                -2106, -2103, -2092, -2082, -1977, -1966, -1960, -1948, -1936, -1931, -1716, -1712, -1709, -1684, -1637, -1472, 
                -1414, -1401, -1209, -1199, -1151, -894, -892, -874, -673, -618
             });
            m_rareDict.Add('C', new int[] { 
                -32443, -32432, -32420, -32354, -32344, -32299, -32280, -32265, -32264, -32185, -32147, -32140, -32131, -32102, -32096, -32092, 
                -32082, -32078, -32067, -32058, -32056, -32031, -32030, -32016, -32014, -32009, -32004, -31911, -31902, -31877, -31871, -31867, 
                -31863, -31862, -31852, -31834, -31833, -31816, -31788, -31749, -31746, -31671, -31658, -31655, -31639, -31637, -31632, -31626, 
                -31624, -31623, -31622, -31619, -31616, -31597, -31596, -31595, -31571, -31544, -31505, -31375, -31349, -31326, -31310, -31307, 
                -31295, -31275, -31119, -31073, -31050, -31037, -31024, -31006, -30980, -30900, -30869, -30868, -30817, -30792, -30783, -30777, 
                -30769, -30768, -30744, -30727, -30584, -30583, -30573, -30525, -30522, -30495, -30474, -30400, -30381, -30355, -30344, -30339, 
                -30331, -30323, -30262, -30232, -30218, -30105, -30089, -30017, -30011, -30010, -29978, -29975, -29869, -29855, -29829, -29821, 
                -29752, -29733, -29727, -29725, -29615, -29589, -29579, -29543, -29524, -29485, -29465, -29367, -29321, -29309, -29249, -29240, 
                -29227, -29219, -29217, -29210, -29082, -29076, -29075, -29062, -28990, -28982, -28976, -28957, -28943, -28934, -28850, -28845, 
                -28800, -28757, -28753, -28738, -28736, -28732, -28712, -28686, -28683, -28589, -28560, -28555, -28527, -28523, -28517, -28515, 
                -28489, -28477, -28475, -28435, -28429, -28419, -28346, -28342, -28341, -28340, -28339, -28338, -28307, -28305, -28302, -28295, 
                -28278, -28268, -28266, -28248, -28236, -28224, -28221, -28211, -28209, -28204, -28187, -28085, -28040, -28035, -28015, -27988, 
                -27938, -27919, -27916, -27832, -27814, -27793, -27752, -27749, -27748, -27741, -27740, -27721, -27719, -27715, -27698, -27687, 
                -27683, -27661, -27578, -27549, -27547, -27530, -27528, -27522, -27520, -27496, -27495, -27491, -27425, -27325, -27319, -27240, 
                -27221, -27213, -27202, -27196, -27162, -27143, -27037, -27025, -27010, -27004, -26977, -26958, -26933, -26916, -26908, -26906, 
                -26885, -26767, -26757, -26740, -26737, -26736, -26730, -26720, -26718, -26702, -26692, -26682, -26681, -26558, -26489, -26439, 
                -26438, -26424, -26406, -26398, -26390, -26373, -26277, -26266, -26254, -26253, -26214, -26209, -26197, -26181, -26145, -26142, 
                -26119, -26039, -26034, -26018, -26014, -26010, -26002, -25976, -25970, -25962, -25932, -25866, -25761, -25724, -25709, -25670, 
                -25652, -25646, -25643, -25619, -25533, -25530, -25479, -25463, -25456, -25454, -25419, -25397, -25370, -25353, -25271, -25262, 
                -25255, -25250, -25249, -25225, -25223, -25176, -25164, -25133, -25111, -25022, -25008, -24989, -24987, -24982, -24947, -24934, 
                -24916, -24893, -24763, -24761, -24747, -24722, -24716, -24693, -24674, -24649, -24619, -24604, -24597, -24595, -24498, -24478, 
                -24452, -24447, -24443, -24432, -24425, -24417, -24415, -24409, -24406, -24378, -24373, -24353, -24350, -24347, -21909, -21887, 
                -21882, -21879, -21669, -21664, -21643, -21639, -21610, -21439, -21433, -21416, -21408, -21406, -21404, -21388, -21375, -21349, 
                -21344, -21182, -21140, -20924, -20923, -20914, -20907, -20898, -20895, -20894, -20841, -20840, -20837, -20832, -20659, -20655, 
                -20638, -20618, -20612, -20604, -20593, -20587, -20394, -20366, -20357, -20348, -20100, -20080, -19887, -19862, -19860, -19851, 
                -19837, -19581, -19572, -19571, -19563, -19555, -19338, -19331, -19330, -19323, -19321, -19135, -19119, -19097, -19075, -19049, 
                -18859, -18607, -18535, -18532, -18358, -18350, -18346, -18345, -18342, -18335, -18331, -18307, -18304, -18297, -18099, -18086, 
                -18074, -18038, -18037, -18025, -17842, -17832, -17822, -17819, -17809, -17800, -17591, -17546, -17539, -17534, -17520, -17296, 
                -17277, -17257, -17079, -17061, -17055, -17018, -16828, -16823, -16821, -16806, -16798, -16574, -16573, -16553, -16530, -16527, 
                -16507, -16482, -16319, -16301, -16272, -16269, -16232, -16042, -16038, -15992, -15989, -15988, -15808, -15806, -15775, -15757, 
                -15737, -15732, -15724, -15544, -15540, -15536, -15506, -15495, -15480, -15477, -15468, -15460, -15277, -15261, -15247, -15243, 
                -15234, -15229, -15221, -15211, -15205, -15007, -14959, -14957, -14782, -14776, -14769, -14749, -14711, -14704, -14696, -14522, 
                -14510, -14498, -14485, -14480, -14477, -14475, -14460, -14445, -14444, -14258, -14257, -14247, -14227, -14225, -14001, -13990, 
                -13981, -13979, -13970, -13960, -13949, -13928, -13744, -13733, -13725, -13710, -13492, -13460, -13455, -13170, -13167, -12978, 
                -12952, -12935, -12910, -12707, -12664, -12480, -12471, -12454, -12450, -12429, -12424, -12421, -12420, -12406, -12207, -12204, 
                -12178, -12157, -11929, -11924, -11923, -11906, -11882, -11705, -11696, -11681, -11678, -11662, -11421, -11419, -11396, -11376, 
                -11192, -11177, -11138, -10933, -10925, -10916, -10901, -10896, -10882, -10880, -10670, -10637, -10623, -10368, -10361, -10359, 
                -10357, -10353, -10152, -10143, -10100, -10092, -10079, -10071, -10040, -10026, -9994, -9993, -9904, -9879, -9874, -9873, 
                -9862, -9861, -9853, -9847, -9835, -9811, -9807, -9775, -9760, -9754, -9641, -9640, -9627, -9618, -9611, -9603, 
                -9594, -9582, -9571, -9530, -9528, -9505, -9489, -9392, -9389, -9387, -9353, -9349, -9332, -9285, -9269, -9243, 
                -9228, -9151, -9136, -9128, -9114, -9081, -9041, -9037, -9015, -9014, -8995, -8965, -8838, -8818, -8817, -8816, 
                -8773, -8763, -8755, -8741, -8707, -8637, -8603, -8599, -8593, -8587, -8581, -8566, -8493, -8459, -8376, -8369, 
                -8361, -8349, -8338, -8337, -8332, -8331, -8297, -8283, -8269, -8230, -8214, -8195, -8118, -8077, -8067, -8045, 
                -8038, -8034, -8024, -8012, -7999, -7987, -7984, -7972, -7967, -7958, -7857, -7855, -7837, -7832, -7831, -7824, 
                -7761, -7729, -7716, -7714, -7708, -7615, -7601, -7570, -7535, -7513, -7510, -7498, -7487, -7460, -7454, -7453, 
                -7449, -7446, -7445, -7440, -7433, -7428, -7351, -7347, -7310, -7300, -7272, -7250, -7248, -7246, -7233, -7232, 
                -7215, -7198, -7085, -7071, -7063, -7054, -7046, -7035, -7024, -7018, -6983, -6968, -6930, -6915, -6834, -6817, 
                -6811, -6758, -6748, -6729, -6697, -6674, -6671, -6664, -6564, -6479, -6467, -6465, -6454, -6449, -6418, -6411, 
                -6410, -6326, -6324, -6320, -6313, -6309, -6300, -6288, -6231, -6179, -6147, -6069, -6044, -6031, -6015, -6010, 
                -6007, -5984, -5983, -5971, -5970, -5966, -5954, -5946, -5945, -5944, -5921, -5894, -5813, -5766, -5752, -5726, 
                -5720, -5709, -5708, -5706, -5695, -5685, -5665, -5661, -5558, -5547, -5520, -5503, -5488, -5479, -5471, -5469, 
                -5434, -5429, -5400, -5268, -5262, -5242, -5233, -5211, -5207, -5200, -5193, -5150, -5139, -5133, -5126, -5012, 
                -5000, -4916, -4896, -4876, -4872, -4771, -4753, -4678, -4649, -4635, -4617, -4534, -4508, -4495, -4459, -4451, 
                -4438, -4405, -4402, -4367, -4363, -4229, -4218, -4214, -4205, -4187, -4175, -4150, -4119, -4113, -4109, -4032, 
                -4013, -3964, -3959, -3950, -3913, -3896, -3893, -3858, -3845, -3751, -3679, -3668, -3645, -3634, -3630, -3619, 
                -3611, -3607, -3513, -3490, -3470, -3464, -3447, -3445, -3430, -3406, -3393, -3383, -3364, -3347, -3215, -3164, 
                -3159, -3144, -3113, -3080, -2949, -2903, -2899, -2883, -2882, -2861, -2855, -2823, -2669, -2658, -2648, -2630, 
                -2626, -2602, -2600, -2593, -2589, -2583, -2576, -2485, -2381, -2374, -2363, -2320, -2196, -2155, -2098, -2067, 
                -2059, -1927, -1924, -1727, -1657, -1648, -1636, -1454, -1444, -1443, -1427, -1419, -1158, -1152, -1150, -1143, 
                -1125, -1122, -950, -933, -913, -903, -883, -680, -679, -678, -669, -663, -656, -653, -649, -640, 
                -637, -617
             });
            m_rareDict.Add('D', new int[] { 
                -32441, -32429, -32413, -32377, -32371, -32369, -32358, -32342, -32338, -32337, -32329, -32258, -32182, -32156, -32124, -32108, 
                -32085, -32079, -32057, -32039, -31933, -31920, -31908, -31900, -31875, -31819, -31818, -31805, -31754, -31679, -31675, -31653, 
                -31647, -31635, -31630, -31612, -31610, -31605, -31604, -31599, -31533, -31513, -31511, -31423, -31405, -31400, -31385, -31363, 
                -31346, -31328, -31322, -31300, -31286, -31264, -31242, -31116, -31114, -31096, -31088, -31081, -31077, -31060, -31054, -31034, 
                -31026, -30898, -30876, -30866, -30851, -30850, -30837, -30835, -30834, -30828, -30822, -30793, -30786, -30633, -30616, -30613, 
                -30590, -30580, -30575, -30567, -30565, -30545, -30535, -30524, -30518, -30515, -30394, -30373, -30343, -30340, -30332, -30318, 
                -30315, -30313, -30311, -30310, -30308, -30303, -30293, -30285, -30277, -30243, -30225, -30140, -30136, -30128, -30118, -30110, 
                -30109, -30100, -30079, -30049, -30019, -29984, -29957, -29876, -29864, -29861, -29851, -29837, -29771, -29761, -29735, -29728, 
                -29709, -29584, -29539, -29530, -29529, -29511, -29499, -29472, -29355, -29340, -29323, -29293, -29290, -29282, -29269, -29243, 
                -29239, -29231, -29218, -29216, -29205, -29204, -29188, -29102, -29097, -29073, -29072, -29046, -29040, -29039, -29023, -29017, 
                -29014, -29006, -28978, -28963, -28853, -28826, -28812, -28809, -28802, -28793, -28786, -28777, -28756, -28747, -28735, -28716, 
                -28702, -28597, -28596, -28569, -28550, -28516, -28502, -28492, -28481, -28478, -28459, -28457, -28316, -28284, -28282, -28281, 
                -28258, -28233, -28229, -28189, -28188, -28166, -28090, -28062, -28026, -28012, -28010, -28009, -28004, -27999, -27950, -27933, 
                -27920, -27817, -27809, -27786, -27776, -27774, -27745, -27705, -27694, -27686, -27685, -27674, -27659, -27654, -27516, -27501, 
                -27489, -27485, -27483, -27482, -27475, -27469, -27436, -27424, -27327, -27285, -27246, -27228, -27186, -27160, -27044, -27027, 
                -27012, -27008, -26990, -26982, -26959, -26949, -26947, -26941, -26886, -26788, -26782, -26763, -26735, -26723, -26683, -26675, 
                -26673, -26663, -26550, -26546, -26488, -26475, -26472, -26469, -26443, -26420, -26389, -26374, -26303, -26299, -26280, -26276, 
                -26258, -26244, -26210, -26189, -26135, -25974, -25965, -25961, -25960, -25956, -25940, -25917, -25913, -25893, -25882, -25877, 
                -25868, -25863, -25768, -25749, -25726, -25715, -25661, -25624, -25614, -25606, -25536, -25496, -25482, -25433, -25395, -25364, 
                -25205, -25193, -25169, -25145, -25131, -25126, -25108, -25023, -24994, -24963, -24946, -24918, -24872, -24838, -24734, -24689, 
                -24588, -24587, -24485, -24422, -24407, -24391, -24364, -24359, -24323, -21942, -21895, -21866, -21862, -21670, -21651, -21606, 
                -21601, -21419, -21400, -21393, -21384, -21369, -21169, -21164, -21149, -21125, -21104, -21091, -20921, -20909, -20904, -20885, 
                -20858, -20846, -20844, -20835, -20671, -20670, -20668, -20666, -20629, -20620, -20615, -20590, -20582, -20412, -20399, -20380, 
                -20323, -20151, -20139, -20113, -20103, -20094, -20093, -19874, -19866, -19641, -19640, -19637, -19634, -19557, -19377, -19370, 
                -19368, -19367, -19363, -19343, -19313, -19312, -19308, -19132, -19087, -19059, -19052, -18875, -18858, -18852, -18806, -18606, 
                -18538, -18530, -18356, -18339, -18315, -18306, -18295, -18283, -18281, -18087, -18055, -18052, -18022, -17856, -17834, -17823, 
                -17799, -17790, -17788, -17783, -17766, -17562, -17307, -17267, -17080, -17040, -17038, -17032, -17000, -16827, -16764, -16762, 
                -16572, -16310, -16297, -16252, -16027, -15969, -15790, -15785, -15762, -15742, -15736, -15717, -15523, -15466, -15291, -15288, 
                -15284, -15278, -15274, -15267, -15263, -15215, -15012, -14989, -14962, -14961, -14955, -14952, -14951, -14774, -14740, -14739, 
                -14725, -14724, -14698, -14523, -14511, -14508, -14505, -14459, -14457, -14436, -14261, -14238, -14184, -13985, -13752, -13748, 
                -13745, -13709, -13682, -13680, -13486, -13479, -13469, -13447, -13429, -13201, -12992, -12990, -12954, -12943, -12898, -12897, 
                -12728, -12720, -12712, -12709, -12675, -12650, -12475, -12472, -12419, -12416, -12413, -12221, -12184, -12179, -12176, -12167, 
                -12140, -11922, -11916, -11903, -11901, -11891, -11710, -11694, -11676, -11675, -11668, -11655, -11625, -11449, -11438, -11427, 
                -11417, -11403, -11386, -11378, -11163, -11161, -11151, -11142, -11124, -11112, -10943, -10927, -10903, -10885, -10871, -10855, 
                -10852, -10686, -10652, -10595, -10430, -10405, -10387, -10376, -10347, -10344, -10165, -10161, -10128, -10119, -10059, -10052, 
                -10007, -10006, -9910, -9863, -9856, -9828, -9767, -9759, -9657, -9628, -9625, -9624, -9614, -9599, -9554, -9520, 
                -9516, -9504, -9408, -9402, -9401, -9396, -9391, -9388, -9359, -9354, -9351, -9338, -9337, -9328, -9321, -9311, 
                -9270, -9245, -9242, -9236, -9235, -9144, -9142, -9137, -9127, -9108, -9105, -9084, -9075, -9066, -9052, -9050, 
                -9034, -8894, -8892, -8778, -8756, -8752, -8710, -8607, -8571, -8569, -8557, -8550, -8546, -8505, -8471, -8367, 
                -8364, -8353, -8346, -8335, -8334, -8272, -8266, -8245, -8243, -8235, -8223, -8117, -8057, -8048, -8030, -8028, 
                -8023, -8022, -8003, -7993, -7978, -7966, -7940, -7865, -7864, -7843, -7840, -7790, -7788, -7778, -7756, -7753, 
                -7748, -7720, -7717, -7605, -7586, -7577, -7559, -7545, -7526, -7494, -7455, -7438, -7324, -7193, -7179, -7103, 
                -7096, -7081, -7070, -7036, -7020, -6974, -6836, -6828, -6826, -6813, -6795, -6786, -6781, -6767, -6749, -6732, 
                -6710, -6584, -6563, -6547, -6544, -6489, -6473, -6426, -6333, -6267, -6261, -6258, -6253, -6250, -6230, -6218, 
                -6176, -6168, -6167, -6071, -6066, -6061, -6033, -5924, -5922, -5892, -5808, -5781, -5722, -5710, -5655, -5567, 
                -5556, -5545, -5538, -5528, -5517, -5513, -5511, -5495, -5492, -5483, -5475, -5472, -5459, -5402, -5397, -5308, 
                -5303, -5295, -5286, -5238, -5237, -5235, -5222, -5202, -5199, -5191, -5190, -5173, -5160, -5141, -5045, -5041, 
                -5026, -5001, -4997, -4996, -4928, -4911, -4788, -4770, -4766, -4738, -4735, -4716, -4703, -4691, -4680, -4677, 
                -4666, -4657, -4652, -4650, -4646, -4638, -4637, -4625, -4623, -4613, -4540, -4539, -4538, -4520, -4494, -4468, 
                -4467, -4434, -4380, -4372, -4362, -4358, -4357, -4275, -4227, -4200, -4163, -4127, -4122, -4117, -4020, -4006, 
                -3963, -3945, -3943, -3939, -3924, -3916, -3877, -3869, -3849, -3754, -3740, -3734, -3698, -3686, -3664, -3662, 
                -3652, -3639, -3626, -3625, -3597, -3596, -3595, -3508, -3463, -3433, -3429, -3395, -3197, -3193, -3170, -3140, 
                -3130, -3122, -3092, -3077, -3075, -3004, -2983, -2982, -2978, -2976, -2975, -2944, -2938, -2911, -2909, -2874, 
                -2834, -2822, -2739, -2725, -2724, -2723, -2695, -2656, -2629, -2598, -2594, -2590, -2571, -2493, -2473, -2452, 
                -2316, -2312, -2175, -2128, -2126, -2114, -2105, -2068, -2062, -1974, -1940, -1923, -1909, -1728, -1683, -1670, 
                -1659, -1464, -1203, -1182, -930, -925, -920, -916, -914, -910, -908, -889, -886, -873, -638, -623, 
                -621
             });
            m_rareDict.Add('E', new int[] { 
                -32288, -32267, -32083, -31895, -31815, -31814, -31634, -31490, -31396, -31370, -31291, -31271, -31234, -31168, -31160, -31100, 
                -31087, -30742, -30505, -30479, -30141, -30070, -30066, -30028, -29981, -29720, -29527, -29526, -29473, -29457, -29357, -29353, 
                -29352, -29333, -29268, -28930, -28816, -28814, -28519, -28486, -28170, -27788, -27778, -27761, -27583, -27029, -26987, -26903, 
                -26902, -26402, -26172, -26041, -26012, -25992, -25922, -25704, -25631, -25462, -24648, -24426, -21683, -21603, -21405, -20360, 
                -20077, -19629, -19624, -19614, -19606, -19598, -19356, -19126, -17515, -15783, -15752, -15501, -14520, -13694, -13458, -13242, 
                -12980, -12711, -12194, -11956, -11450, -11362, -11109, -11104, -10931, -10929, -10688, -10426, -10362, -10144, -10068, -9920, 
                -9915, -9818, -9587, -9536, -9524, -9263, -9065, -9021, -8879, -8869, -8823, -8787, -8736, -8724, -8617, -8568, 
                -8460, -8355, -8325, -8317, -8256, -8211, -7995, -7579, -7309, -7243, -7211, -7042, -6774, -6713, -6675, -6471, 
                -6163, -6023, -5776, -5650, -5527, -5519, -5510, -5481, -5288, -5135, -4529, -4528, -4482, -4480, -4369, -4176, 
                -4151, -4028, -4023, -4001, -3911, -3894, -3693, -3514, -3418, -3182, -3181, -2935, -2934, -2718, -2444, -2417, 
                -2340, -2311, -2181, -1907, -1723, -1702, -1701, -1640, -692, -644, -635
             });
            m_rareDict.Add('F', new int[] { 
                -32428, -32362, -32350, -32345, -32333, -32328, -32287, -32167, -32146, -32115, -32086, -32066, -32021, -31898, -31884, -31771, 
                -31764, -31674, -31673, -31669, -31666, -31665, -31649, -31620, -31515, -31413, -31350, -31246, -31134, -30619, -30603, -30595, 
                -30578, -30559, -30550, -30502, -30471, -30317, -30306, -30129, -30114, -30103, -30083, -30082, -30063, -30059, -30014, -29969, 
                -29965, -29964, -29884, -29853, -29749, -29748, -29743, -29541, -29488, -29456, -29376, -29356, -29329, -29275, -29044, -28981, 
                -28932, -28843, -28821, -28803, -28783, -28745, -28723, -28695, -28594, -28276, -28275, -28214, -28094, -27976, -27951, -27679, 
                -27414, -27413, -27405, -27403, -27312, -27309, -27304, -27288, -27237, -27179, -27070, -27066, -27031, -26996, -26994, -26961, 
                -26956, -26943, -26935, -26900, -26893, -26799, -26766, -26750, -26734, -26719, -26707, -26703, -26669, -26662, -26633, -26529, 
                -26388, -26379, -26294, -26260, -26186, -25873, -25864, -25780, -25752, -25745, -25718, -25702, -25651, -25531, -25500, -25484, 
                -25448, -25411, -25270, -25158, -25009, -24962, -24942, -24938, -24930, -24866, -24758, -24718, -24715, -24687, -24663, -24578, 
                -24400, -24376, -24339, -21931, -21912, -21661, -21645, -21427, -21421, -21395, -21157, -21137, -21092, -20889, -20887, -20876, 
                -20867, -20648, -20606, -20578, -20413, -20373, -20372, -20154, -20153, -20128, -20122, -19880, -19870, -19631, -19362, -19108, 
                -19079, -18865, -18836, -18614, -18333, -18326, -18111, -18110, -18108, -18085, -18043, -18016, -17855, -17787, -17553, -17511, 
                -17334, -17325, -17280, -17270, -17265, -17260, -17253, -17083, -17042, -17003, -16998, -16992, -16784, -16779, -16748, -16544, 
                -16528, -16484, -16244, -16243, -16054, -16048, -16043, -16023, -16000, -15998, -15991, -15987, -15517, -15516, -15511, -15241, 
                -15217, -14988, -14985, -14984, -14976, -14974, -14755, -14525, -14504, -14255, -14205, -13973, -13692, -13690, -13688, -13683, 
                -13480, -13452, -13224, -13196, -13166, -12961, -12960, -12958, -12949, -12932, -12722, -12692, -12389, -12171, -12139, -11919, 
                -11907, -11897, -11691, -11644, -11385, -11380, -11188, -11165, -10891, -10684, -10669, -10162, -10157, -10138, -10133, -10126, 
                -10093, -10084, -9907, -9864, -9848, -9842, -9798, -9785, -9749, -9748, -9646, -9478, -9298, -9286, -9262, -9107, 
                -9073, -9027, -9024, -8994, -8974, -8889, -8880, -8849, -8809, -8758, -8745, -8627, -8626, -8584, -8532, -8512, 
                -8492, -8305, -8303, -8261, -8204, -8115, -8066, -8043, -7861, -7851, -7835, -7780, -7771, -7770, -7701, -7692, 
                -7613, -7589, -7583, -7568, -7434, -7342, -7338, -7251, -7197, -7064, -7017, -6969, -6938, -6800, -6790, -6777, 
                -6760, -6737, -6667, -6662, -6511, -6438, -6430, -6319, -6280, -6246, -6234, -6232, -6221, -5942, -5901, -5899, 
                -5893, -5767, -5700, -5401, -5290, -5248, -5245, -5194, -5144, -5027, -5022, -5007, -4941, -4900, -4887, -4880, 
                -4760, -4734, -4673, -4672, -4663, -4630, -4629, -4430, -4425, -4395, -4276, -4273, -4253, -4240, -4233, -4232, 
                -4231, -4216, -4215, -4144, -4101, -4005, -3991, -3955, -3931, -3854, -3774, -3767, -3761, -3756, -3712, -3497, 
                -3487, -3402, -3363, -3357, -3344, -3341, -3196, -3190, -3188, -3183, -3138, -3083, -2970, -2919, -2918, -2893, 
                -2844, -2833, -2744, -2730, -2698, -2621, -2618, -2580, -2491, -2442, -2387, -2352, -2346, -2322, -2313, -2309, 
                -2215, -2207, -2057, -1980, -1975, -1972, -1968, -1961, -1955, -1944, -1943, -1935, -1690, -1462, -1397, -1121, 
                -959, -954, -949, -942, -906, -885, -876
             });
            m_rareDict.Add('G', new int[] { 
                -32433, -32417, -32399, -32393, -32392, -32381, -32356, -32306, -32290, -32282, -32276, -32273, -32171, -32128, -32119, -32041, 
                -32017, -31910, -31892, -31786, -31782, -31767, -31757, -31753, -31663, -31638, -31614, -31602, -31588, -31581, -31579, -31546, 
                -31497, -31496, -31491, -31424, -31421, -31407, -31382, -31343, -31334, -31320, -31309, -31293, -31284, -31281, -31130, -31129, 
                -31111, -31080, -31065, -31063, -31016, -31009, -30978, -30904, -30895, -30741, -30738, -30735, -30733, -30728, -30607, -30600, 
                -30577, -30574, -30507, -30504, -30483, -30466, -30366, -30335, -30222, -30216, -30215, -30143, -30047, -30043, -30035, -29822, 
                -29787, -29774, -29762, -29587, -29508, -29507, -29505, -29504, -29447, -29351, -29337, -29319, -29318, -29299, -29297, -29120, 
                -29103, -29088, -29022, -29005, -28995, -28970, -28966, -28949, -28842, -28784, -28776, -28772, -28701, -28699, -28600, -28557, 
                -28512, -28511, -28504, -28501, -28467, -28445, -28437, -28347, -28343, -28332, -28201, -28194, -28193, -28191, -28181, -28089, 
                -28087, -28083, -28067, -28065, -28019, -28011, -28006, -27990, -27934, -27924, -27911, -27810, -27798, -27797, -27747, -27739, 
                -27735, -27727, -27710, -27702, -27695, -27566, -27510, -27509, -27504, -27494, -27311, -27268, -27236, -27215, -27041, -27023, 
                -27022, -26975, -26946, -26934, -26899, -26795, -26725, -26724, -26677, -26674, -26668, -26645, -26526, -26496, -26494, -26490, 
                -26485, -26480, -26468, -26463, -26462, -26461, -26451, -26448, -26446, -26445, -26432, -26289, -26286, -26265, -26251, -26224, 
                -26215, -26208, -26204, -26190, -26170, -26163, -26123, -26033, -25993, -25937, -25872, -25778, -25740, -25731, -25716, -25678, 
                -25654, -25604, -25603, -25476, -25464, -25393, -25368, -25360, -25355, -25268, -25256, -25253, -25236, -25214, -25157, -25014, 
                -24981, -24904, -24901, -24877, -24875, -24874, -24764, -24704, -24702, -24699, -24695, -24656, -24651, -24629, -24445, -24399, 
                -24397, -24393, -24382, -24345, -24344, -21913, -21906, -21886, -21880, -21864, -21691, -21674, -21668, -21642, -21625, -21611, 
                -21401, -21159, -21147, -21127, -21116, -21105, -20875, -20860, -20663, -20624, -20602, -20595, -20408, -20361, -20335, -20330, 
                -20137, -20135, -20070, -19889, -19878, -19858, -19846, -19826, -19819, -19635, -19599, -19567, -19358, -19099, -19069, -19066, 
                -19065, -19061, -19057, -19056, -18870, -18857, -18811, -18802, -18798, -18791, -18600, -18367, -18278, -18109, -18101, -18080, 
                -18068, -18067, -18057, -18041, -17848, -17836, -17812, -17771, -17763, -17528, -17344, -17331, -17301, -17290, -17085, -17060, 
                -17054, -17053, -17041, -17033, -17027, -16810, -16805, -16791, -16752, -16745, -16736, -16565, -16557, -16541, -16237, -16235, 
                -16224, -16062, -16057, -16052, -16020, -15993, -15788, -15787, -15786, -15741, -15543, -15498, -15463, -15282, -15245, -15228, 
                -15023, -15021, -15018, -15014, -14993, -14767, -14718, -14697, -14695, -14694, -14524, -14493, -14448, -14447, -14272, -14248, 
                -14191, -14010, -13963, -13961, -13955, -13952, -13754, -13726, -13477, -13413, -12984, -12947, -12938, -12918, -12646, -12438, 
                -12174, -12138, -12131, -11953, -11940, -11912, -11888, -11682, -11637, -11634, -11443, -11439, -11426, -11413, -11411, -11399, 
                -11169, -11166, -11156, -11130, -11123, -11122, -11117, -11105, -10911, -10848, -10672, -10663, -10649, -10609, -10166, -10140, 
                -10120, -10091, -10082, -10076, -10072, -10070, -10054, -10043, -10032, -10028, -10021, -9986, -9914, -9897, -9890, -9869, 
                -9841, -9820, -9788, -9755, -9742, -9661, -9651, -9630, -9617, -9613, -9593, -9583, -9556, -9548, -9544, -9538, 
                -9493, -9300, -9279, -9255, -9247, -9230, -9226, -9143, -9104, -9079, -9046, -9003, -8896, -8884, -8883, -8868, 
                -8865, -8837, -8831, -8828, -8802, -8798, -8748, -8624, -8580, -8517, -8498, -8497, -8478, -8472, -8379, -8354, 
                -8341, -8290, -8282, -8253, -8248, -8247, -8229, -8217, -8212, -8128, -8124, -8122, -8111, -7997, -7938, -7793, 
                -7752, -7740, -7738, -7698, -7610, -7609, -7576, -7563, -7555, -7534, -7517, -7471, -7463, -7330, -7308, -7264, 
                -7191, -7185, -7084, -7083, -7034, -7021, -7016, -6970, -6966, -6921, -6844, -6819, -6812, -6803, -6783, -6733, 
                -6692, -6567, -6549, -6541, -6528, -6518, -6502, -6493, -6459, -6440, -6439, -6404, -6236, -6226, -6219, -6205, 
                -6199, -6162, -6070, -6011, -5925, -5914, -5911, -5907, -5900, -5769, -5768, -5764, -5724, -5696, -5694, -5681, 
                -5649, -5552, -5524, -5509, -5458, -5448, -5446, -5443, -5439, -5424, -5408, -5395, -5388, -5386, -5273, -5263, 
                -5258, -5215, -5187, -5179, -5166, -5161, -5131, -5125, -4975, -4970, -4944, -4943, -4782, -4777, -4757, -4747, 
                -4742, -4707, -4688, -4681, -4655, -4642, -4544, -4455, -4435, -4424, -4423, -4414, -4411, -4388, -4274, -4223, 
                -4177, -4160, -4141, -4014, -4002, -3989, -3984, -3937, -3936, -3929, -3917, -3909, -3879, -3871, -3853, -3637, 
                -3592, -3494, -3475, -3404, -3396, -3391, -3356, -3355, -3233, -3223, -3205, -3179, -3119, -3104, -3084, -3074, 
                -2968, -2965, -2960, -2954, -2940, -2913, -2892, -2850, -2821, -2818, -2736, -2727, -2703, -2701, -2683, -2682, 
                -2563, -2495, -2440, -2422, -2399, -2343, -2335, -2329, -2319, -2214, -2206, -2200, -2199, -2179, -2171, -2144, 
                -2140, -2132, -2120, -2115, -2112, -1983, -1970, -1953, -1952, -1939, -1929, -1926, -1919, -1906, -1891, -1656, 
                -1448, -1429, -1393, -1192, -1191, -1178, -939, -887, -882, -625, -620
             });
            m_rareDict.Add('H', new int[] { 
                -32421, -32357, -32291, -32284, -32283, -32165, -32151, -32141, -32109, -32075, -32037, -32002, -31903, -31841, -31830, -31802, 
                -31766, -31660, -31606, -31587, -31415, -31409, -31406, -31327, -31305, -31297, -31290, -31255, -31253, -31250, -31244, -31236, 
                -31162, -31155, -31149, -31143, -31133, -31127, -31072, -31044, -31042, -31035, -31013, -31005, -30906, -30905, -30896, -30889, 
                -30881, -30870, -30861, -30858, -30836, -30812, -30805, -30801, -30776, -30775, -30753, -30743, -30731, -30730, -30648, -30594, 
                -30586, -30581, -30568, -30564, -30539, -30494, -30480, -30467, -30395, -30360, -30305, -30286, -30268, -30250, -30248, -30134, 
                -30130, -30113, -30101, -30097, -30065, -30045, -30036, -30020, -30002, -29970, -29955, -29874, -29873, -29858, -29848, -29828, 
                -29780, -29779, -29763, -29757, -29745, -29632, -29631, -29594, -29582, -29575, -29570, -29556, -29549, -29471, -29360, -29344, 
                -29306, -29289, -29278, -29262, -29260, -29064, -29041, -29013, -28999, -28824, -28822, -28811, -28774, -28767, -28766, -28710, 
                -28679, -28587, -28575, -28568, -28561, -28549, -28536, -28528, -28494, -28488, -28473, -28463, -28439, -28423, -28291, -28252, 
                -28241, -28210, -28207, -28177, -28175, -28172, -28171, -28043, -28021, -28014, -27973, -27932, -27922, -27835, -27823, -27811, 
                -27794, -27734, -27730, -27696, -27673, -27570, -27541, -27497, -27421, -27396, -27313, -27307, -27295, -27291, -27277, -27269, 
                -27266, -27256, -27255, -27233, -27211, -27204, -27199, -27198, -27187, -27176, -27157, -27145, -27138, -27007, -26992, -26963, 
                -26781, -26776, -26759, -26731, -26697, -26679, -26657, -26650, -26638, -26627, -26542, -26514, -26513, -26466, -26459, -26453, 
                -26452, -26395, -26302, -26291, -26270, -26259, -26230, -26194, -26121, -26046, -26024, -26022, -26009, -25945, -25941, -25781, 
                -25774, -25766, -25765, -25736, -25730, -25711, -25707, -25665, -25660, -25656, -25637, -25622, -25609, -25534, -25512, -25489, 
                -25478, -25470, -25466, -25439, -25427, -25421, -25416, -25367, -25366, -25357, -25349, -25273, -25240, -25218, -25204, -25178, 
                -25167, -25163, -25162, -25159, -25156, -25144, -25134, -25129, -25021, -24992, -24979, -24960, -24914, -24898, -24897, -24854, 
                -24850, -24848, -24768, -24765, -24762, -24751, -24745, -24742, -24741, -24725, -24720, -24692, -24688, -24664, -24641, -24640, 
                -24614, -24609, -24596, -24493, -24486, -24481, -24475, -24430, -24342, -21950, -21934, -21892, -21875, -21861, -21696, -21671, 
                -21663, -21432, -21391, -21378, -21367, -21172, -21153, -21144, -21099, -21096, -20928, -20899, -20853, -20845, -20640, -20600, 
                -20410, -20388, -20359, -20352, -20351, -20350, -20347, -20344, -20340, -20337, -20159, -20158, -20114, -20082, -20081, -19899, 
                -19894, -19890, -19884, -19872, -19857, -19842, -19823, -19648, -19589, -19579, -19565, -19387, -19299, -19133, -19048, -19044, 
                -18815, -18581, -18568, -18558, -18330, -18328, -18317, -18287, -18090, -18078, -18051, -18028, -17853, -17845, -17833, -17825, 
                -17810, -17596, -17548, -17529, -17522, -17513, -17343, -17315, -17312, -17292, -17273, -17256, -17065, -17056, -17012, -17005, 
                -16996, -16753, -16539, -16531, -16500, -16316, -16315, -16308, -16303, -16256, -16010, -15990, -15975, -15974, -15971, -15803, 
                -15802, -15801, -15798, -15792, -15768, -15766, -15761, -15748, -15541, -15535, -15500, -15482, -15292, -15033, -14992, -14980, 
                -14966, -14765, -14763, -14753, -14746, -14727, -14722, -14702, -14526, -14476, -14271, -14260, -14259, -14256, -14201, -14200, 
                -14199, -14193, -14179, -13753, -13747, -13741, -13731, -13724, -13703, -13503, -13501, -13500, -13454, -13424, -13415, -13210, 
                -13197, -13192, -13188, -13169, -13163, -13162, -13161, -12959, -12934, -12908, -12896, -12725, -12724, -12655, -12652, -12648, 
                -12647, -12394, -12390, -12205, -12199, -12181, -11887, -11876, -11641, -11415, -11409, -11397, -11377, -11176, -11174, -11131, 
                -11125, -11120, -11118, -11108, -10908, -10902, -10862, -10858, -10849, -10675, -10665, -10651, -10650, -10641, -10631, -10601, 
                -10597, -10419, -10395, -10394, -10385, -10383, -10377, -10350, -10175, -10172, -10171, -10151, -10145, -10129, -10115, -10098, 
                -10088, -10085, -10011, -9902, -9898, -9756, -9750, -9732, -9561, -9555, -9546, -9541, -9486, -9483, -9284, -9280, 
                -9258, -9057, -9056, -9047, -8978, -8970, -8840, -8813, -8794, -8760, -8747, -8721, -8634, -8621, -8614, -8570, 
                -8558, -8539, -8530, -8528, -8522, -8515, -8513, -8450, -8380, -8320, -8296, -8281, -8277, -8236, -8196, -8125, 
                -8086, -8070, -8062, -8032, -8007, -8000, -7994, -7989, -7965, -7957, -7951, -7945, -7850, -7758, -7711, -7707, 
                -7562, -7552, -7511, -7499, -7497, -7482, -7441, -7354, -7320, -7312, -7304, -7292, -7280, -7247, -7228, -7224, 
                -7212, -7208, -7188, -7172, -7095, -7068, -7066, -7049, -7007, -7001, -6997, -6992, -6979, -6958, -6941, -6934, 
                -6929, -6927, -6805, -6796, -6792, -6769, -6762, -6755, -6743, -6741, -6736, -6722, -6709, -6699, -6696, -6681, 
                -6591, -6588, -6580, -6537, -6424, -6298, -6295, -6283, -6242, -6228, -6208, -6183, -6159, -6155, -6150, -6073, 
                -6059, -6055, -6054, -5973, -5909, -5908, -5822, -5815, -5800, -5790, -5765, -5742, -5739, -5737, -5682, -5643, 
                -5560, -5548, -5544, -5537, -5535, -5445, -5438, -5427, -5425, -5279, -5274, -5271, -5266, -5236, -5228, -5217, 
                -5183, -5156, -5029, -5019, -5018, -5017, -5003, -4979, -4971, -4942, -4925, -4918, -4914, -4890, -4888, -4881, 
                -4792, -4769, -4754, -4739, -4718, -4701, -4679, -4531, -4505, -4504, -4491, -4457, -4452, -4415, -4392, -4356, 
                -4354, -4199, -4195, -4159, -4148, -4116, -3998, -3997, -3996, -3994, -3954, -3942, -3927, -3923, -3904, -3895, 
                -3881, -3846, -3768, -3755, -3692, -3685, -3675, -3605, -3588, -3586, -3519, -3486, -3484, -3439, -3422, -3419, 
                -3413, -3410, -3405, -3398, -3392, -3249, -3160, -3149, -3146, -3125, -3086, -3085, -3003, -2977, -2932, -2922, 
                -2857, -2841, -2751, -2720, -2700, -2676, -2643, -2640, -2601, -2566, -2475, -2470, -2468, -2460, -2451, -2437, 
                -2430, -2407, -2345, -2327, -2308, -2219, -2205, -2189, -2163, -2145, -2113, -2081, -2078, -2051, -1963, -1950, 
                -1902, -1895, -1725, -1718, -1699, -1642, -1633, -1469, -1461, -1455, -1445, -1402, -1398, -1207, -1197, -1183, 
                -1175, -1167, -1123, -941, -936, -934, -932, -704, -677, -634, -616
             });
            m_rareDict.Add('J', new int[] { 
                -32436, -32435, -32434, -32424, -32416, -32388, -32374, -32367, -32348, -32324, -32260, -32190, -32189, -32183, -32155, -32149, 
                -32137, -32116, -32104, -32101, -32095, -32062, -32051, -32036, -32033, -32032, -32003, -31928, -31916, -31905, -31887, -31886, 
                -31879, -31872, -31870, -31859, -31840, -31813, -31794, -31787, -31785, -31774, -31761, -31756, -31678, -31672, -31657, -31654, 
                -31651, -31642, -31641, -31633, -31631, -31609, -31608, -31600, -31583, -31580, -31578, -31577, -31575, -31574, -31573, -31565, 
                -31557, -31550, -31547, -31540, -31522, -31521, -31520, -31516, -31514, -31512, -31501, -31493, -31422, -31419, -31417, -31399, 
                -31398, -31384, -31379, -31371, -31345, -31315, -31313, -31301, -31287, -31283, -31277, -31269, -31125, -31097, -31059, -31040, 
                -31002, -30981, -30979, -30907, -30891, -30884, -30844, -30819, -30818, -30760, -30747, -30724, -30627, -30617, -30615, -30614, 
                -30612, -30609, -30587, -30549, -30547, -30546, -30543, -30542, -30537, -30533, -30529, -30513, -30508, -30486, -30476, -30469, 
                -30468, -30399, -30396, -30390, -30336, -30333, -30300, -30292, -30287, -30275, -30239, -30228, -30138, -30120, -30116, -30107, 
                -30102, -30098, -30051, -30048, -30044, -30042, -30041, -30034, -29989, -29976, -29960, -29959, -29958, -29878, -29868, -29852, 
                -29843, -29827, -29807, -29786, -29772, -29751, -29744, -29726, -29703, -29624, -29597, -29588, -29573, -29565, -29548, -29534, 
                -29528, -29501, -29483, -29482, -29480, -29458, -29452, -29448, -29341, -29334, -29305, -29285, -29261, -29237, -29222, -29195, 
                -29189, -29118, -29116, -29106, -29105, -29095, -29090, -29083, -29063, -29052, -29031, -29019, -29015, -29001, -28991, -28975, 
                -28972, -28969, -28960, -28941, -28931, -28857, -28856, -28834, -28820, -28808, -28805, -28797, -28794, -28791, -28785, -28780, 
                -28775, -28770, -28769, -28750, -28739, -28734, -28728, -28727, -28725, -28705, -28690, -28688, -28674, -28599, -28565, -28498, 
                -28497, -28493, -28483, -28438, -28436, -28329, -28325, -28313, -28296, -28279, -28277, -28267, -28256, -28254, -28249, -28242, 
                -28228, -28203, -28202, -28195, -28190, -28186, -28180, -28165, -28077, -28038, -28025, -28005, -27998, -27996, -27983, -27981, 
                -27978, -27974, -27967, -27948, -27913, -27906, -27838, -27820, -27818, -27813, -27806, -27780, -27773, -27750, -27728, -27716, 
                -27712, -27708, -27689, -27688, -27682, -27672, -27668, -27660, -27657, -27656, -27650, -27580, -27576, -27569, -27564, -27561, 
                -27533, -27513, -27508, -27492, -27478, -27462, -27460, -27449, -27441, -27440, -27438, -27428, -27422, -27412, -27408, -27398, 
                -27397, -27315, -27302, -27273, -27272, -27264, -27217, -27208, -27193, -27188, -27171, -27169, -27061, -27040, -27020, -27017, 
                -27001, -27000, -26931, -26905, -26815, -26806, -26796, -26787, -26777, -26773, -26771, -26760, -26755, -26696, -26694, -26693, 
                -26678, -26659, -26652, -26636, -26631, -26552, -26545, -26544, -26532, -26525, -26517, -26515, -26486, -26474, -26454, -26407, 
                -26405, -26381, -26378, -26304, -26301, -26281, -26279, -26278, -26274, -26264, -26257, -26250, -26249, -26248, -26246, -26229, 
                -26213, -26182, -26173, -26165, -26162, -26158, -26149, -26134, -26114, -26026, -26006, -25984, -25980, -25968, -25964, -25959, 
                -25955, -25954, -25943, -25934, -25927, -25919, -25914, -25892, -25789, -25788, -25785, -25784, -25782, -25775, -25738, -25722, 
                -25719, -25717, -25706, -25683, -25682, -25673, -25669, -25647, -25645, -25641, -25636, -25612, -25607, -25605, -25528, -25519, 
                -25497, -25488, -25450, -25449, -25444, -25434, -25431, -25405, -25361, -25358, -25280, -25264, -25260, -25257, -25251, -25227, 
                -25221, -25208, -25207, -25203, -25200, -25168, -25166, -25154, -25122, -25116, -25113, -25096, -25094, -25020, -25006, -24984, 
                -24973, -24954, -24952, -24948, -24944, -24929, -24917, -24757, -24739, -24735, -24732, -24728, -24719, -24707, -24684, -24672, 
                -24671, -24667, -24658, -24622, -24616, -24606, -24602, -24589, -24585, -24507, -24505, -24479, -24459, -24444, -24429, -24416, 
                -24377, -24374, -24369, -24348, -24333, -21947, -21933, -21924, -21905, -21884, -21865, -21863, -21680, -21660, -21655, -21653, 
                -21641, -21634, -21629, -21628, -21627, -21438, -21423, -21394, -21392, -21381, -21374, -21358, -21348, -21180, -21179, -21161, 
                -21158, -21156, -21154, -21152, -21148, -21138, -21131, -20925, -20874, -20869, -20862, -20849, -20842, -20833, -20669, -20658, 
                -20647, -20642, -20636, -20621, -20597, -20395, -20392, -20386, -20363, -20343, -20336, -20329, -20328, -20147, -20145, -20110, 
                -20078, -19901, -19886, -19850, -19845, -19840, -19809, -19645, -19633, -19626, -19620, -19618, -19391, -19388, -19319, -19315, 
                -19306, -19302, -19136, -19123, -19063, -18871, -18861, -18832, -18816, -18797, -18787, -18615, -18611, -18604, -18595, -18590, 
                -18587, -18579, -18576, -18563, -18553, -18547, -18316, -18312, -18302, -18300, -18293, -18286, -18094, -18091, -18081, -18079, 
                -18069, -18053, -18044, -18039, -18020, -18019, -17827, -17805, -17803, -17786, -17782, -17770, -17595, -17577, -17565, -17527, 
                -17507, -17337, -17329, -17324, -17313, -17302, -17299, -17297, -17279, -17271, -17266, -17263, -17074, -17067, -17063, -17058, 
                -17051, -17049, -17034, -17029, -17026, -17024, -17023, -16997, -16993, -16785, -16771, -16765, -16562, -16554, -16547, -16520, 
                -16509, -16498, -16492, -16307, -16305, -16304, -16300, -16299, -16290, -16273, -16271, -16060, -16055, -16039, -16036, -16031, 
                -16030, -15970, -15777, -15776, -15773, -15770, -15744, -15733, -15484, -15475, -15473, -15472, -15459, -15285, -15265, -15264, 
                -15252, -15242, -15238, -15223, -15212, -15210, -15020, -15019, -15013, -15011, -15003, -15002, -14999, -14967, -14947, -14946, 
                -14780, -14772, -14752, -14751, -14712, -14521, -14515, -14489, -14481, -14479, -14474, -14467, -14438, -14435, -14434, -14265, 
                -14249, -14244, -14237, -14217, -14213, -14206, -14203, -14195, -14189, -14185, -14182, -13992, -13983, -13933, -13931, -13925, 
                -13760, -13756, -13735, -13730, -13728, -13715, -13708, -13702, -13691, -13673, -13499, -13493, -13475, -13451, -13444, -13430, 
                -13230, -13229, -13225, -13218, -13202, -13190, -13186, -13182, -13160, -12988, -12973, -12968, -12951, -12924, -12914, -12912, 
                -12899, -12735, -12732, -12703, -12698, -12667, -12658, -12470, -12467, -12463, -12442, -12436, -12432, -12431, -12428, -12414, 
                -12412, -12411, -12395, -12392, -12387, -12202, -12169, -12164, -12158, -12147, -11960, -11959, -11957, -11945, -11942, -11937, 
                -11913, -11883, -11877, -11704, -11699, -11698, -11697, -11695, -11654, -11651, -11640, -11639, -11638, -11633, -11623, -11617, 
                -11446, -11440, -11434, -11432, -11422, -11418, -11410, -11405, -11391, -11382, -11381, -11373, -11365, -11195, -11164, -11154, 
                -11119, -10936, -10915, -10907, -10899, -10897, -10878, -10873, -10864, -10863, -10681, -10634, -10616, -10614, -10604, -10600, 
                -10424, -10423, -10421, -10416, -10402, -10401, -10380, -10378, -10374, -10173, -10169, -10139, -10134, -10106, -10097, -10078, 
                -10051, -10048, -10038, -10023, -10018, -10013, -9894, -9891, -9888, -9866, -9859, -9855, -9846, -9819, -9810, -9786, 
                -9782, -9773, -9772, -9771, -9770, -9662, -9621, -9620, -9606, -9605, -9592, -9590, -9568, -9562, -9558, -9547, 
                -9527, -9511, -9508, -9503, -9499, -9406, -9403, -9393, -9379, -9376, -9375, -9372, -9371, -9369, -9363, -9360, 
                -9336, -9324, -9314, -9309, -9294, -9273, -9272, -9260, -9150, -9146, -9139, -9135, -9115, -9110, -9099, -9098, 
                -9078, -9036, -9032, -9023, -9020, -8998, -8980, -8966, -8964, -8867, -8866, -8821, -8797, -8772, -8768, -8751, 
                -8729, -8720, -8717, -8638, -8631, -8619, -8615, -8553, -8549, -8545, -8537, -8534, -8489, -8488, -8484, -8479, 
                -8476, -8458, -8375, -8371, -8294, -8268, -8238, -8222, -8205, -8126, -8112, -8108, -8103, -8096, -8036, -8018, 
                -8015, -8011, -7975, -7971, -7964, -7954, -7841, -7826, -7819, -7802, -7794, -7776, -7769, -7755, -7736, -7723, 
                -7704, -7686, -7594, -7587, -7578, -7560, -7525, -7520, -7504, -7503, -7477, -7461, -7331, -7323, -7311, -7302, 
                -7299, -7294, -7285, -7273, -7270, -7235, -7218, -7170, -7099, -7067, -7065, -7059, -7044, -7025, -7022, -7009, 
                -7004, -6999, -6994, -6984, -6955, -6822, -6820, -6775, -6773, -6721, -6720, -6716, -6712, -6711, -6687, -6676, 
                -6672, -6670, -6585, -6583, -6577, -6519, -6516, -6495, -6481, -6470, -6468, -6435, -6434, -6409, -6407, -6318, 
                -6310, -6297, -6272, -6264, -6263, -6257, -6247, -6243, -6227, -6202, -6196, -6186, -6180, -6175, -6171, -6164, 
                -6078, -6068, -6057, -6047, -6046, -6039, -6021, -6018, -6013, -5999, -5993, -5982, -5974, -5947, -5935, -5910, 
                -5906, -5904, -5898, -5810, -5807, -5786, -5785, -5755, -5723, -5721, -5714, -5712, -5705, -5688, -5677, -5671, 
                -5654, -5507, -5489, -5465, -5463, -5462, -5461, -5457, -5407, -5403, -5399, -5394, -5392, -5391, -5385, -5384, 
                -5383, -5311, -5304, -5287, -5275, -5272, -5259, -5252, -5251, -5210, -5192, -5182, -5170, -5162, -5146, -5140, 
                -5040, -5034, -5015, -5009, -4999, -4980, -4973, -4964, -4949, -4940, -4934, -4897, -4889, -4789, -4774, -4773, 
                -4772, -4764, -4758, -4733, -4729, -4702, -4682, -4647, -4636, -4614, -4533, -4526, -4515, -4511, -4503, -4487, 
                -4466, -4417, -4413, -4412, -4398, -4366, -4281, -4265, -4262, -4228, -4208, -4196, -4171, -4168, -4157, -4140, 
                -4136, -4125, -4102, -4029, -4021, -4012, -3995, -3970, -3938, -3934, -3928, -3921, -3889, -3884, -3883, -3876, 
                -3864, -3843, -3766, -3746, -3729, -3723, -3720, -3717, -3694, -3683, -3676, -3648, -3642, -3638, -3632, -3627, 
                -3612, -3610, -3600, -3515, -3428, -3423, -3407, -3397, -3380, -3372, -3264, -3253, -3251, -3226, -3131, -3129, 
                -3128, -3115, -3106, -3005, -2974, -2962, -2942, -2937, -2929, -2878, -2871, -2851, -2849, -2843, -2831, -2830, 
                -2824, -2742, -2740, -2728, -2722, -2705, -2694, -2657, -2636, -2634, -2622, -2614, -2606, -2605, -2603, -2595, 
                -2591, -2582, -2579, -2565, -2484, -2477, -2463, -2446, -2431, -2405, -2402, -2389, -2380, -2367, -2366, -2342, 
                -2339, -2338, -2332, -2326, -2237, -2236, -2234, -2222, -2191, -2174, -2160, -2150, -2148, -2123, -2122, -2118, 
                -2087, -2083, -2076, -2075, -1978, -1973, -1958, -1922, -1900, -1721, -1720, -1714, -1711, -1710, -1707, -1706, 
                -1704, -1695, -1680, -1679, -1666, -1655, -1654, -1651, -1639, -1449, -1447, -1439, -1426, -1408, -1404, -1396, 
                -1392, -1215, -1170, -1162, -1160, -1159, -1157, -1156, -1147, -1142, -1139, -1138, -1137, -1133, -1129, -940, 
                -926, -865, -864, -703, -684, -683, -682, -681, -667, -658, -636, -615
             });
            m_rareDict.Add('K', new int[] { 
                -32170, -32080, -31874, -31849, -31779, -31773, -31664, -31661, -31636, -31625, -31589, -31564, -31556, -31551, -31548, -31541, 
                -31535, -31416, -31410, -31404, -31372, -31251, -31163, -31147, -31029, -30883, -30871, -30840, -30785, -30749, -30723, -30639, 
                -30621, -30566, -30526, -30519, -30511, -30510, -30500, -30389, -30386, -30364, -30341, -30296, -30273, -30249, -30246, -30133, 
                -30093, -30033, -30012, -29881, -29811, -29790, -29755, -29602, -29580, -29560, -29550, -29535, -29519, -29510, -29372, -29312, 
                -29302, -29301, -29283, -29266, -29254, -29247, -29233, -29220, -29104, -29080, -29065, -28948, -28840, -28781, -28675, -28604, 
                -28574, -28563, -28539, -28509, -28505, -28460, -28454, -28432, -28425, -28292, -28247, -28238, -28217, -28216, -28184, -28024, 
                -27986, -27975, -27915, -27840, -27819, -27769, -27755, -27720, -27714, -27563, -27506, -27500, -27480, -27401, -27280, -27275, 
                -27274, -27262, -27216, -27161, -26915, -26890, -26807, -26768, -26690, -26637, -26635, -26628, -26499, -26447, -26422, -26394, 
                -26223, -26212, -26048, -26045, -26043, -26037, -26036, -26035, -25963, -25952, -25949, -25948, -25906, -25742, -25733, -25697, 
                -25684, -25639, -25498, -25279, -25233, -25228, -25212, -25182, -25010, -24883, -24868, -24835, -24740, -24726, -24691, -24605, 
                -24464, -24439, -24424, -24386, -24375, -24337, -21952, -21922, -21860, -21184, -21145, -20614, -20599, -20111, -20073, -19875, 
                -19865, -19815, -19636, -19628, -19603, -19602, -19593, -19583, -19582, -19568, -19559, -19556, -19374, -19352, -19332, -19298, 
                -19124, -19114, -19060, -18829, -18812, -18799, -18785, -18594, -18557, -18540, -18531, -18351, -18349, -18348, -18347, -18324, 
                -18301, -18095, -18066, -17808, -17784, -17764, -17599, -17538, -17317, -17068, -17057, -17050, -16999, -16770, -16277, -16006, 
                -15976, -15731, -15727, -15720, -15545, -15524, -15507, -15214, -15037, -14978, -14965, -14451, -14236, -14219, -14218, -13722, 
                -13687, -13488, -13474, -13449, -13204, -13193, -13184, -13155, -12726, -12193, -12190, -12146, -11962, -11951, -11948, -11944, 
                -11928, -11911, -11902, -11875, -11384, -10939, -10938, -10930, -10923, -10898, -10141, -10114, -10056, -10031, -10022, -10020, 
                -10015, -9992, -9989, -9908, -9816, -9815, -9787, -9753, -9584, -9572, -9550, -9537, -9481, -9386, -9325, -9306, 
                -9253, -9234, -9111, -9097, -9093, -9070, -9060, -9051, -9006, -8895, -8888, -8874, -8863, -8836, -8819, -8792, 
                -8740, -8738, -8622, -8542, -8507, -8463, -8302, -8291, -8288, -8267, -8249, -8239, -8224, -8085, -8044, -8041, 
                -8019, -8016, -8009, -8002, -7834, -7757, -7737, -7690, -7616, -7550, -7538, -7447, -7427, -7317, -7316, -7278, 
                -7263, -7258, -7257, -7244, -7222, -7219, -7205, -7100, -7092, -7055, -6949, -6839, -6837, -6801, -6788, -6764, 
                -6754, -6701, -6678, -6581, -6558, -6534, -6420, -6402, -6328, -6305, -6287, -6248, -6229, -6212, -6170, -6149, 
                -6050, -6037, -6025, -5920, -5793, -5792, -5760, -5747, -5729, -5648, -5561, -5554, -5550, -5539, -5460, -5422, 
                -5412, -5381, -5196, -5172, -5158, -5048, -4963, -4799, -4780, -4752, -4714, -4705, -4632, -4626, -4525, -4521, 
                -4512, -4489, -4465, -4443, -4441, -4437, -4394, -4387, -4371, -4360, -4255, -4180, -4172, -4162, -4161, -4153, 
                -4099, -4015, -3982, -3967, -3870, -3735, -3651, -3636, -3591, -3505, -3501, -3478, -3420, -3390, -3374, -3343, 
                -3342, -3239, -3225, -3207, -3203, -3198, -3192, -3112, -3091, -3087, -2987, -2704, -2697, -2671, -2645, -2611, 
                -2488, -2321, -2229, -2204, -2166, -2162, -2116, -2111, -2107, -2091, -1700, -1671, -1669, -1471, -1436, -1180, 
                -935, -694, -624
             });
            m_rareDict.Add('L', new int[] { 
                -32439, -32394, -32391, -32390, -32370, -32334, -32275, -32268, -32266, -32184, -32166, -32153, -32134, -32132, -32118, -32112, 
                -32110, -32015, -31931, -31927, -31926, -31912, -31894, -31861, -31851, -31850, -31838, -31835, -31829, -31828, -31823, -31799, 
                -31750, -31677, -31650, -31645, -31629, -31621, -31611, -31593, -31592, -31584, -31582, -31568, -31563, -31558, -31549, -31543, 
                -31538, -31536, -31526, -31525, -31507, -31506, -31403, -31402, -31383, -31347, -31341, -31339, -31338, -31329, -31317, -31282, 
                -31157, -31141, -31139, -31136, -31121, -31108, -31093, -31068, -31062, -31032, -30997, -30986, -30908, -30886, -30860, -30827, 
                -30813, -30803, -30802, -30797, -30796, -30795, -30780, -30770, -30767, -30765, -30757, -30754, -30729, -30649, -30646, -30645, 
                -30640, -30602, -30597, -30585, -30544, -30540, -30528, -30503, -30492, -30397, -30377, -30361, -30359, -30354, -30353, -30346, 
                -30288, -30281, -30274, -30272, -30267, -30266, -30264, -30263, -30259, -30233, -30137, -30119, -30111, -30058, -30030, -29990, 
                -29983, -29980, -29974, -29888, -29883, -29877, -29836, -29816, -29799, -29782, -29765, -29764, -29739, -29708, -29706, -29704, 
                -29701, -29629, -29628, -29625, -29610, -29604, -29558, -29540, -29522, -29491, -29486, -29481, -29474, -29470, -29444, -29368, 
                -29358, -29354, -29342, -29336, -29327, -29307, -29304, -29296, -29295, -29294, -29265, -29255, -29235, -29221, -29214, -29200, 
                -29193, -29191, -29190, -29096, -29089, -29087, -29086, -29074, -29061, -28973, -28942, -28863, -28855, -28852, -28837, -28836, 
                -28835, -28829, -28768, -28746, -28730, -28708, -28704, -28696, -28576, -28556, -28537, -28525, -28524, -28521, -28513, -28507, 
                -28496, -28420, -28328, -28323, -28314, -28308, -28294, -28274, -28273, -28270, -28244, -28226, -28213, -28208, -28199, -28095, 
                -28002, -28000, -27997, -27979, -27961, -27936, -27928, -27925, -27816, -27815, -27783, -27771, -27742, -27738, -27737, -27706, 
                -27692, -27665, -27577, -27559, -27555, -27554, -27550, -27548, -27543, -27542, -27539, -27538, -27534, -27525, -27519, -27517, 
                -27512, -27511, -27466, -27457, -27444, -27427, -27415, -27296, -27281, -27241, -27223, -27209, -27195, -27191, -27183, -27163, 
                -27156, -27154, -27153, -27152, -27067, -27062, -27052, -27051, -27050, -27042, -26981, -26964, -26930, -26928, -26917, -26897, 
                -26814, -26801, -26800, -26791, -26769, -26754, -26747, -26746, -26744, -26741, -26728, -26706, -26698, -26641, -26541, -26471, 
                -26467, -26441, -26440, -26437, -26429, -26428, -26427, -26425, -26419, -26384, -26383, -26377, -26288, -26287, -26273, -26238, 
                -26202, -26201, -26199, -26198, -26196, -26192, -26187, -26183, -26178, -26176, -26167, -26166, -26160, -26150, -26139, -26138, 
                -26136, -26132, -26131, -26129, -26128, -26124, -26044, -26015, -25997, -25994, -25958, -25928, -25903, -25894, -25875, -25754, 
                -25748, -25696, -25692, -25668, -25657, -25655, -25653, -25648, -25640, -25629, -25626, -25610, -25529, -25527, -25521, -25518, 
                -25517, -25510, -25461, -25428, -25420, -25412, -25410, -25401, -25389, -25354, -25274, -25259, -25258, -25239, -25224, -25173, 
                -25165, -25160, -25150, -25147, -25138, -25132, -25105, -25019, -25004, -25002, -25001, -24998, -24985, -24977, -24974, -24965, 
                -24964, -24959, -24957, -24953, -24950, -24943, -24936, -24935, -24924, -24922, -24912, -24911, -24908, -24878, -24862, -24759, 
                -24750, -24730, -24727, -24686, -24659, -24652, -24632, -24621, -24610, -24581, -24511, -24500, -24494, -24491, -24474, -24471, 
                -24468, -24467, -24462, -24461, -24460, -24458, -24454, -24448, -24440, -24438, -24437, -24404, -24384, -24370, -24365, -24360, 
                -24358, -24329, -21925, -21916, -21873, -21693, -21689, -21677, -21673, -21632, -21626, -21607, -21425, -21424, -21413, -21402, 
                -21371, -21366, -21354, -21353, -21352, -21175, -21163, -21162, -21155, -21133, -21126, -21124, -21120, -21114, -21113, -21112, 
                -21111, -21110, -21098, -20910, -20906, -20890, -20881, -20879, -20856, -20847, -20838, -20836, -20834, -20622, -20592, -20581, 
                -20580, -20577, -20416, -20415, -20402, -20401, -20389, -20387, -20379, -20378, -20377, -20365, -20339, -20150, -20148, -20142, 
                -20136, -20096, -20068, -20065, -19904, -19903, -19898, -19861, -19852, -19827, -19822, -19820, -19817, -19632, -19616, -19609, 
                -19607, -19596, -19590, -19580, -19574, -19564, -19392, -19385, -19381, -19355, -19346, -19342, -19334, -19333, -19327, -19320, 
                -19317, -19307, -19296, -19113, -19112, -19110, -19109, -19104, -19103, -19102, -19098, -19074, -19064, -19054, -19053, -18855, 
                -18851, -18847, -18825, -18821, -18793, -18792, -18784, -18620, -18605, -18589, -18572, -18556, -18552, -18545, -18355, -18354, 
                -18344, -18337, -18322, -18309, -18299, -18272, -18102, -18088, -18083, -18082, -18061, -18046, -18045, -18024, -17828, -17804, 
                -17797, -17796, -17789, -17780, -17778, -17769, -17768, -17761, -17600, -17579, -17578, -17573, -17572, -17570, -17569, -17564, 
                -17560, -17558, -17524, -17519, -17516, -17510, -17508, -17336, -17318, -17309, -17304, -17088, -17046, -17036, -17019, -16826, 
                -16825, -16824, -16803, -16802, -16797, -16786, -16778, -16742, -16526, -16521, -16516, -16512, -16506, -16486, -16483, -16287, 
                -16280, -16274, -16270, -16262, -16261, -16260, -16259, -16258, -16228, -16226, -16045, -16037, -16033, -16029, -16003, -15996, 
                -15984, -15982, -15799, -15796, -15789, -15774, -15771, -15769, -15746, -15730, -15729, -15726, -15725, -15552, -15481, -15462, 
                -15458, -15296, -15294, -15276, -15253, -15249, -15239, -15236, -15230, -15209, -15208, -15036, -15034, -15031, -15028, -15022, 
                -14983, -14982, -14973, -14971, -14956, -14949, -14784, -14783, -14775, -14738, -14708, -14707, -14700, -14514, -14506, -14455, 
                -14454, -14446, -14441, -14264, -14254, -14230, -14204, -14177, -13996, -13993, -13987, -13965, -13962, -13958, -13945, -13944, 
                -13937, -13923, -13920, -13757, -13751, -13738, -13717, -13707, -13696, -13676, -13671, -13494, -13489, -13481, -13445, -13437, 
                -13432, -13431, -13416, -13410, -13247, -13244, -13238, -13217, -13216, -13212, -13208, -13205, -13203, -13199, -13198, -13191, 
                -13189, -13187, -13183, -13179, -13175, -13164, -12950, -12936, -12931, -12927, -12916, -12903, -12730, -12729, -12713, -12704, 
                -12676, -12672, -12661, -12474, -12466, -12455, -12453, -12439, -12433, -12418, -12405, -12388, -12386, -12384, -12222, -12218, 
                -12217, -12216, -12187, -12183, -12153, -11943, -11938, -11931, -11925, -11921, -11874, -11873, -11712, -11685, -11677, -11672, 
                -11661, -11660, -11657, -11648, -11620, -11451, -11436, -11430, -11429, -11404, -11392, -11162, -10941, -10932, -10890, -10865, 
                -10861, -10622, -10613, -10612, -10427, -10400, -10372, -10367, -10354, -10170, -10167, -10164, -10019, -10004, -9900, -9899, 
                -9876, -9849, -9838, -9805, -9803, -9792, -9779, -9739, -9735, -9734, -9733, -9731, -9652, -9636, -9600, -9574, 
                -9549, -9367, -9366, -9365, -9335, -9331, -9330, -9318, -9302, -9287, -9250, -9246, -9244, -9224, -9149, -9145, 
                -9125, -9124, -9121, -9109, -9103, -9101, -9091, -9090, -9048, -9042, -9022, -9001, -8993, -8963, -8893, -8864, 
                -8857, -8845, -8842, -8826, -8824, -8784, -8775, -8732, -8719, -8715, -8708, -8706, -8639, -8628, -8625, -8613, 
                -8611, -8610, -8609, -8608, -8605, -8600, -8552, -8540, -8516, -8506, -8499, -8485, -8474, -8453, -8382, -8378, 
                -8333, -8324, -8314, -8311, -8310, -8285, -8265, -8257, -8246, -8234, -8213, -8200, -8120, -8116, -8113, -8101, 
                -8064, -8049, -8040, -8027, -8026, -8020, -8010, -7985, -7974, -7968, -7952, -7950, -7870, -7848, -7847, -7822, 
                -7807, -7801, -7795, -7791, -7781, -7760, -7744, -7743, -7728, -7721, -7710, -7685, -7548, -7537, -7516, -7502, 
                -7458, -7337, -7295, -7287, -7271, -7242, -7231, -7220, -7217, -7186, -7183, -7182, -7178, -7176, -7080, -7078, 
                -7053, -7048, -7038, -7033, -7027, -7015, -7013, -7012, -7005, -6993, -6987, -6965, -6944, -6931, -6928, -6926, 
                -6923, -6914, -6841, -6814, -6808, -6806, -6802, -6791, -6784, -6750, -6747, -6724, -6706, -6698, -6690, -6688, 
                -6683, -6560, -6535, -6525, -6508, -6500, -6496, -6482, -6478, -6453, -6448, -6422, -6414, -6334, -6315, -6312, 
                -6308, -6299, -6292, -6285, -6270, -6268, -6244, -6240, -6223, -6216, -6198, -6192, -6188, -6169, -6157, -6154, 
                -6076, -6041, -6040, -6034, -6030, -6027, -6024, -6022, -6020, -6008, -6004, -6002, -5996, -5964, -5952, -5936, 
                -5933, -5926, -5923, -5919, -5905, -5895, -5816, -5814, -5806, -5775, -5759, -5758, -5750, -5727, -5725, -5716, 
                -5715, -5707, -5674, -5669, -5667, -5657, -5647, -5642, -5637, -5568, -5534, -5516, -5491, -5487, -5468, -5467, 
                -5454, -5447, -5405, -5297, -5283, -5281, -5280, -5257, -5256, -5231, -5223, -5219, -5218, -5206, -5174, -5171, 
                -5151, -5130, -5053, -5042, -5031, -5030, -5025, -5024, -5021, -5010, -4959, -4958, -4939, -4932, -4906, -4891, 
                -4798, -4778, -4763, -4727, -4670, -4669, -4665, -4615, -4535, -4532, -4517, -4510, -4499, -4493, -4464, -4463, 
                -4436, -4422, -4419, -4418, -4407, -4370, -4286, -4285, -4277, -4266, -4252, -4250, -4247, -4243, -4234, -4183, 
                -4182, -4178, -4174, -4173, -4170, -4146, -4138, -4131, -4123, -4121, -4103, -4100, -4027, -3981, -3948, -3941, 
                -3915, -3907, -3905, -3886, -3885, -3880, -3875, -3873, -3860, -3848, -3844, -3739, -3716, -3705, -3688, -3684, 
                -3673, -3670, -3666, -3635, -3633, -3622, -3620, -3609, -3604, -3601, -3594, -3520, -3510, -3503, -3468, -3453, 
                -3451, -3435, -3432, -3425, -3389, -3384, -3365, -3349, -3337, -3257, -3256, -3248, -3213, -3212, -3206, -3200, 
                -3172, -3143, -3141, -3118, -3082, -3076, -3002, -3000, -2991, -2966, -2955, -2924, -2921, -2907, -2891, -2865, 
                -2860, -2847, -2829, -2749, -2712, -2711, -2699, -2674, -2668, -2646, -2638, -2633, -2616, -2604, -2577, -2575, 
                -2492, -2487, -2483, -2482, -2480, -2465, -2450, -2426, -2410, -2408, -2394, -2392, -2365, -2361, -2356, -2348, 
                -2334, -2333, -2324, -2213, -2197, -2195, -2187, -2186, -2185, -2180, -2178, -2138, -2129, -2109, -2101, -2080, 
                -2069, -2061, -1979, -1937, -1932, -1894, -1726, -1722, -1696, -1693, -1682, -1674, -1660, -1450, -1438, -1417, 
                -1415, -1395, -1384, -1377, -1200, -1198, -1196, -1190, -1189, -1185, -1171, -1163, -1161, -1144, -1141, -1136, 
                -1131, -1127, -952, -907, -698, -665, -664, -632, -626, -622
             });
            m_rareDict.Add('M', new int[] { 
                -32444, -32349, -32305, -32286, -32271, -32159, -32125, -32063, -32040, -31925, -31889, -31857, -31792, -31789, -31784, -31777, 
                -31775, -31772, -31769, -31763, -31759, -31748, -31668, -31646, -31569, -31559, -31552, -31545, -31534, -31510, -31355, -31333, 
                -31304, -31303, -31266, -31153, -31145, -31137, -31045, -31007, -30983, -30897, -30888, -30880, -30815, -30806, -30799, -30794, 
                -30788, -30628, -30622, -30588, -30487, -30475, -30383, -30350, -30349, -30253, -30244, -30220, -30219, -30069, -30061, -30053, 
                -30031, -30015, -29979, -29862, -29854, -29847, -29835, -29815, -29812, -29805, -29776, -29769, -29766, -29750, -29729, -29714, 
                -29630, -29623, -29616, -29581, -29523, -29516, -29492, -29348, -29343, -29303, -29263, -29036, -29002, -28993, -28984, -28980, 
                -28977, -28965, -28947, -28936, -28846, -28773, -28709, -28606, -28580, -28573, -28547, -28530, -28514, -28462, -28456, -28348, 
                -28344, -28337, -28320, -28271, -28232, -28230, -28227, -28225, -28212, -28197, -28167, -28037, -27985, -27953, -27952, -27912, 
                -27910, -27779, -27722, -27582, -27581, -27562, -27531, -27524, -27523, -27499, -27472, -27322, -27321, -27294, -27231, -27225, 
                -27207, -27203, -27164, -27060, -27059, -27043, -27026, -27016, -26999, -26973, -26929, -26680, -26630, -26629, -26547, -26527, 
                -26519, -26511, -26482, -26444, -26426, -26415, -26414, -26387, -26371, -26234, -26227, -26217, -26207, -26195, -25989, -25975, 
                -25936, -25925, -25910, -25902, -25901, -25895, -25874, -25869, -25861, -25763, -25762, -25751, -25747, -25693, -25690, -25677, 
                -25664, -25520, -25475, -25474, -25468, -25458, -25453, -25414, -25399, -25388, -25369, -25276, -25267, -25243, -25192, -25146, 
                -25127, -25101, -25097, -25007, -24986, -24955, -24921, -24879, -24670, -24633, -24510, -24506, -24470, -24442, -24401, -24392, 
                -24387, -24368, -24335, -21949, -21941, -21899, -21897, -21885, -21883, -21694, -21686, -21658, -21437, -21415, -21412, -21389, 
                -21382, -21356, -21174, -21108, -20920, -20883, -20878, -20871, -20864, -20863, -20850, -20637, -20633, -20623, -20616, -20368, 
                -20364, -20127, -20126, -20121, -20108, -20107, -20091, -20087, -20085, -20084, -20076, -19893, -19885, -19877, -19871, -19864, 
                -19859, -19838, -19831, -19830, -19828, -19824, -19821, -19818, -19619, -19613, -19389, -19359, -19116, -19101, -19092, -19076, 
                -18877, -18867, -18853, -18835, -18592, -18325, -18296, -18276, -18106, -18103, -18017, -17850, -17792, -17785, -17592, -17531, 
                -17526, -17339, -17323, -17071, -16796, -16782, -16766, -16761, -16760, -16750, -16744, -16518, -16515, -16502, -16281, -16063, 
                -16059, -16058, -16046, -16035, -16028, -16017, -15509, -15494, -15491, -15478, -15280, -14963, -14768, -14748, -14720, -14689, 
                -14491, -14483, -14464, -14461, -14442, -14241, -14222, -14216, -14194, -14014, -13969, -13967, -13941, -13759, -13739, -13734, 
                -13720, -13712, -13701, -13495, -13446, -13425, -13235, -13206, -13200, -13174, -12963, -12920, -12706, -12701, -12699, -12690, 
                -12677, -12645, -12460, -12457, -12452, -12449, -12399, -12385, -12203, -12195, -12192, -11967, -11686, -11631, -11630, -11629, 
                -11622, -11445, -11186, -11111, -11110, -10660, -10647, -10645, -10621, -10620, -10617, -10599, -10117, -10112, -10110, -10104, 
                -10049, -10046, -10001, -9911, -9903, -9867, -9854, -9808, -9741, -9573, -9564, -9517, -9513, -9480, -9381, -9283, 
                -9278, -9239, -9094, -9062, -9044, -9004, -8999, -8990, -8987, -8968, -8796, -8786, -8725, -8711, -8533, -8510, 
                -8495, -8342, -8322, -8260, -8221, -8220, -8216, -8215, -8201, -8092, -8080, -8068, -8050, -8047, -8042, -7977, 
                -7866, -7806, -7805, -7800, -7773, -7751, -7750, -7726, -7697, -7607, -7540, -7512, -7507, -7479, -7340, -7327, 
                -7322, -7305, -7296, -7279, -7267, -7230, -7223, -7195, -7194, -7192, -7177, -7171, -7079, -7040, -7008, -6980, 
                -6971, -6961, -6952, -6947, -6935, -6818, -6807, -6789, -6731, -6685, -6668, -6586, -6570, -6565, -6517, -6498, 
                -6497, -6458, -6442, -6322, -6209, -6203, -6193, -6191, -6172, -6165, -6042, -5990, -5981, -5953, -5950, -5805, 
                -5804, -5803, -5799, -5784, -5763, -5703, -5662, -5436, -5420, -5389, -5246, -5234, -5213, -5212, -5153, -5137, 
                -5124, -5056, -5055, -5052, -5033, -5032, -5006, -5004, -4936, -4917, -4905, -4878, -4790, -4694, -4690, -4689, 
                -4683, -4661, -4634, -4627, -4624, -4616, -4460, -4449, -4442, -4440, -4403, -4382, -4143, -4142, -4132, -4105, 
                -3976, -3974, -3953, -3951, -3899, -3892, -3758, -3704, -3680, -3678, -3641, -3598, -3449, -3415, -3403, -3370, 
                -3348, -3334, -3331, -3330, -3214, -3184, -3167, -3151, -3145, -3142, -3078, -2997, -2995, -2994, -2963, -2930, 
                -2914, -2885, -2881, -2867, -2839, -2692, -2670, -2652, -2570, -2568, -2479, -2425, -2406, -2400, -2382, -2372, 
                -2358, -2211, -2184, -2135, -2134, -2124, -2104, -2090, -2079, -2077, -2073, -1967, -1892, -1647, -1638, -1470, 
                -1431, -1388, -1206, -1204, -1165, -1146, -1132, -1124, -1120, -960, -955, -951, -947, -946, -945, -927, 
                -923, -911, -905, -896, -890, -627
             });
            m_rareDict.Add('N', new int[] { 
                -32411, -32400, -32318, -32317, -32191, -32177, -32103, -32043, -31878, -31855, -31853, -31826, -31822, -31800, -31420, -31392, 
                -31288, -31152, -31090, -31033, -30990, -30847, -30829, -30809, -30800, -30773, -30759, -30756, -30751, -30629, -30512, -30509, 
                -30497, -30485, -30229, -30106, -30085, -30075, -30040, -30007, -30004, -29962, -29885, -29870, -29860, -29802, -29798, -29788, 
                -29783, -29777, -29736, -29731, -29730, -29721, -29710, -29618, -29612, -29607, -29606, -29572, -29566, -29564, -29559, -29554, 
                -29517, -29495, -29328, -29314, -29228, -29112, -29108, -29078, -29071, -29067, -29045, -28823, -28602, -28520, -28503, -28490, 
                -28480, -28450, -28434, -28259, -28222, -28198, -28058, -28049, -28042, -28030, -28020, -28008, -28003, -27984, -27907, -27836, 
                -27831, -27790, -27784, -27768, -27760, -27729, -27723, -27697, -27693, -27666, -27571, -27567, -27546, -27484, -27248, -27224, 
                -27201, -27064, -27005, -26993, -26979, -26968, -26965, -26951, -26774, -26700, -26528, -26487, -26450, -26300, -26298, -26272, 
                -26226, -26221, -26169, -26153, -26126, -25889, -25764, -25644, -25635, -25617, -25522, -25514, -25487, -25465, -25425, -25149, 
                -25118, -25104, -25100, -24945, -24937, -24910, -24888, -24675, -24654, -24637, -24405, -24327, -21857, -21695, -21692, -21684, 
                -20866, -20665, -20645, -20591, -20406, -20102, -20092, -19835, -19611, -19562, -19380, -19366, -18854, -18841, -18838, -18826, 
                -18820, -18804, -18612, -18570, -18566, -18321, -18279, -18112, -17841, -17839, -17802, -17549, -17547, -17333, -17320, -17310, 
                -17306, -17285, -17282, -16559, -16295, -15995, -15784, -15719, -15716, -15714, -15514, -15488, -15465, -15290, -15289, -15279, 
                -15272, -15231, -15213, -15202, -15027, -15015, -14968, -14733, -14723, -14693, -14497, -14471, -14466, -14452, -14228, -13997, 
                -13975, -13732, -13667, -13466, -13457, -12955, -12919, -12715, -12694, -12649, -12427, -12223, -12212, -12198, -12132, -11964, 
                -11947, -11884, -11879, -11679, -11406, -11194, -11193, -11159, -10887, -10860, -10671, -10662, -10428, -10399, -10389, -10351, 
                -10122, -10109, -10075, -10069, -10050, -9990, -9821, -9809, -9776, -9575, -9557, -9491, -9405, -9385, -9370, -9368, 
                -9343, -9316, -9240, -9231, -9218, -9132, -9118, -9064, -9035, -8992, -8830, -8806, -8767, -8590, -8589, -8565, 
                -8555, -8511, -8509, -8490, -8480, -8455, -8365, -8351, -8275, -8244, -8242, -8218, -8202, -8121, -8100, -8021, 
                -8001, -7956, -7953, -7816, -7812, -7804, -7779, -7696, -7597, -7581, -7569, -7543, -7515, -7506, -7474, -7442, 
                -7435, -7326, -7325, -7089, -7026, -6830, -6798, -6753, -6728, -6669, -6555, -6521, -6509, -6492, -6464, -6443, 
                -6437, -6427, -6284, -6256, -6056, -6049, -6009, -5977, -5939, -5779, -5718, -5635, -5563, -5473, -5433, -5415, 
                -5289, -5255, -5250, -5177, -5147, -5138, -4991, -4988, -4933, -4700, -4699, -4656, -4610, -4401, -4374, -4365, 
                -4284, -4165, -4139, -4024, -4000, -3946, -3932, -3772, -3721, -3644, -3599, -3593, -3416, -3379, -3345, -2988, 
                -2986, -2984, -2981, -2917, -2901, -2900, -2879, -2826, -2734, -2685, -2659, -2586, -2490, -2476, -2349, -2318, 
                -2317, -1982, -1724, -1208, -1140, -688, -687, -659, -651
             });
            m_rareDict.Add('O', new int[] { 
                -31298, -31285, -30903, -30352, -28327, -27465, -26193, -26025, -25942, -25247, -25137, -24608, -20908, -15275, -15248, -13934, 
                -13711, -13414, -10610, -9559, -7970, -7823, -7450, -6506, -5455, -3602, -1941, -1420, -645
             });
            m_rareDict.Add('P', new int[] { 
                -32340, -32330, -32311, -32161, -32121, -31913, -31765, -31662, -31591, -31524, -31494, -31360, -31268, -31257, -31248, -31146, 
                -30899, -30838, -30832, -30821, -30791, -30790, -30746, -30722, -30641, -30611, -30589, -30398, -30376, -30357, -30320, -30294, 
                -30238, -30139, -30123, -30094, -30090, -30029, -30000, -29977, -29832, -29814, -29796, -29775, -29723, -29583, -29538, -29490, 
                -29477, -29445, -29374, -29370, -29366, -29201, -29048, -29043, -29033, -29021, -29007, -29004, -28825, -28789, -28754, -28605, 
                -28551, -28345, -28309, -28299, -28293, -28262, -28057, -28056, -28039, -28031, -27971, -27914, -27908, -27834, -27746, -27707, 
                -27676, -27544, -27502, -27420, -27404, -27298, -27218, -27192, -27069, -27049, -26962, -26790, -26684, -26667, -26648, -26554, 
                -26492, -26456, -26411, -26397, -26261, -26211, -26020, -25933, -25929, -25915, -25859, -25776, -25760, -25757, -25728, -25713, 
                -25688, -25681, -25642, -25638, -25535, -25525, -25493, -25406, -25373, -25235, -25232, -25209, -25206, -25201, -25174, -25123, 
                -25115, -24990, -24886, -24884, -24882, -24880, -24860, -24766, -24755, -24714, -24703, -24433, -24418, -24383, -24357, -24356, 
                -24334, -24328, -21932, -21650, -21646, -21608, -21093, -20918, -20886, -20855, -20672, -20630, -20617, -20362, -20354, -20338, 
                -20334, -20144, -20129, -20123, -20098, -19900, -19854, -19829, -19610, -19608, -19605, -19591, -19351, -19335, -19326, -19130, 
                -19129, -19127, -19120, -19106, -18827, -18823, -18624, -18577, -18564, -18539, -18310, -18298, -18273, -18030, -17835, -17818, 
                -17807, -17774, -17772, -17276, -16556, -16514, -16286, -16283, -16240, -16032, -15800, -15795, -15780, -15738, -15533, -15532, 
                -15513, -15504, -15464, -15295, -15283, -15251, -15244, -15225, -14995, -14994, -14987, -14979, -14779, -14771, -14741, -14690, 
                -14516, -14484, -14450, -14239, -14202, -13982, -13977, -13976, -13948, -13935, -13468, -13463, -13233, -12953, -12946, -12925, 
                -12905, -12469, -12443, -12215, -12213, -12197, -12170, -12142, -11920, -11892, -11700, -11671, -11632, -11628, -11447, -11158, 
                -11147, -10857, -10853, -10683, -10653, -10410, -10123, -10121, -10086, -10073, -10065, -10033, -10014, -9998, -9913, -9896, 
                -9870, -9825, -9801, -9795, -9751, -9738, -9581, -9566, -9518, -9488, -9476, -9357, -9320, -9297, -9290, -9252, 
                -9219, -9055, -9039, -9019, -9002, -8886, -8882, -8870, -8834, -8829, -8825, -8781, -8734, -8731, -8612, -8501, 
                -8491, -8475, -8280, -8225, -8102, -7986, -7983, -7976, -7973, -7960, -7942, -7858, -7852, -7825, -7817, -7787, 
                -7715, -7693, -7593, -7590, -7539, -7532, -7473, -7470, -7439, -7345, -7335, -7283, -7269, -7203, -7174, -7039, 
                -7037, -7014, -7010, -6972, -6956, -6945, -6936, -6745, -6708, -6569, -6545, -6480, -6477, -6457, -6455, -6450, 
                -6423, -6296, -6282, -6254, -6238, -6194, -6166, -6035, -6005, -5967, -5951, -5941, -5934, -5777, -5733, -5713, 
                -5656, -5551, -5546, -5525, -5521, -5494, -5450, -5449, -5390, -5382, -5294, -5244, -5205, -5203, -5155, -5149, 
                -5039, -4978, -4937, -4783, -4726, -4722, -4537, -4536, -4518, -4513, -4500, -4472, -4462, -4446, -4439, -4420, 
                -4409, -4391, -4386, -4373, -4287, -4280, -4249, -4248, -4158, -4124, -4120, -3925, -3867, -3760, -3747, -3731, 
                -3728, -3725, -3719, -3703, -3663, -3640, -3615, -3506, -3491, -3489, -3411, -3401, -3353, -3260, -3222, -3217, 
                -3189, -3177, -3169, -3162, -3158, -3150, -3148, -3123, -3103, -2998, -2953, -2915, -2842, -2750, -2745, -2735, 
                -2644, -2588, -2585, -2581, -2567, -2428, -2388, -2350, -2167, -2149, -1951, -1694, -1692, -1687, -1379, -1149, 
                -958, -631, -629
             });
            m_rareDict.Add('Q', new int[] { 
                -32440, -32379, -32323, -32313, -32302, -32294, -32281, -32163, -32120, -32098, -32072, -32006, -31935, -31924, -31917, -31909, 
                -31885, -31858, -31854, -31839, -31762, -31755, -31656, -31648, -31618, -31539, -31519, -31503, -31414, -31412, -31394, -31377, 
                -31373, -31358, -31332, -31331, -31308, -31294, -31279, -31258, -31235, -31120, -31115, -31113, -31101, -31099, -31085, -31079, 
                -31078, -31070, -31028, -31017, -31012, -30999, -30989, -30879, -30862, -30737, -30636, -30635, -30632, -30623, -30601, -30552, 
                -30531, -30514, -30379, -30351, -30334, -30327, -30324, -30316, -30298, -30297, -30283, -30234, -30224, -30221, -30108, -30022, 
                -29987, -29971, -29961, -29859, -29856, -29840, -29810, -29740, -29738, -29716, -29700, -29576, -29568, -29557, -29544, -29454, 
                -29453, -29442, -29371, -29350, -29330, -29310, -29274, -29246, -29245, -29230, -29209, -29208, -29196, -29186, -29077, -29056, 
                -29050, -29032, -29027, -29024, -29016, -28983, -28964, -28938, -28858, -28847, -28838, -28790, -28684, -28680, -28566, -28562, 
                -28553, -28535, -28532, -28510, -28476, -28455, -28452, -28446, -28442, -28331, -28319, -28317, -28312, -28311, -28301, -28300, 
                -28297, -28251, -28250, -28182, -28173, -28096, -28084, -28078, -28073, -28063, -28036, -28029, -28023, -28022, -27955, -27939, 
                -27935, -27931, -27796, -27782, -27766, -27764, -27759, -27744, -27732, -27709, -27675, -27537, -27536, -27535, -27451, -27450, 
                -27434, -27433, -27417, -27308, -27226, -27212, -27140, -27071, -27057, -27035, -27011, -26922, -26889, -26798, -26793, -26764, 
                -26762, -26743, -26739, -26738, -26716, -26712, -26709, -26701, -26671, -26540, -26512, -26495, -26484, -26483, -26477, -26464, 
                -26435, -26408, -26382, -26293, -26290, -26275, -26245, -26233, -26228, -26220, -26218, -26203, -26180, -26174, -26161, -26144, 
                -26143, -26117, -26038, -26005, -25983, -25982, -25944, -25918, -25891, -25886, -25884, -25858, -25786, -25701, -25689, -25675, 
                -25667, -25532, -25516, -25509, -25508, -25494, -25460, -25459, -25430, -25422, -25383, -25266, -25252, -25197, -25120, -25095, 
                -25013, -24976, -24933, -24931, -24907, -24891, -24849, -24713, -24710, -24678, -24666, -24662, -24635, -24627, -24593, -24590, 
                -24496, -24421, -24419, -24390, -24389, -24385, -24379, -24362, -21928, -21923, -21891, -21681, -21675, -21666, -21649, -21617, 
                -21431, -21398, -21396, -21370, -21350, -21177, -21165, -21118, -20912, -20897, -20884, -20657, -20579, -20576, -20371, -20356, 
                -20333, -20332, -20322, -20152, -20133, -20083, -20066, -19813, -19601, -19597, -19588, -19586, -19554, -19552, -19386, -19382, 
                -19364, -19361, -19360, -19348, -19347, -19337, -19325, -19324, -19309, -19303, -19107, -19089, -18863, -18837, -18617, -18584, 
                -18580, -18362, -18341, -18340, -18336, -18332, -18329, -18311, -18291, -18277, -18104, -18100, -18040, -17852, -17851, -17849, 
                -17838, -17829, -17775, -17773, -17762, -17589, -17582, -17571, -17568, -17544, -17514, -17506, -17286, -17258, -17248, -17072, 
                -17048, -17017, -17011, -16822, -16820, -16818, -16816, -16801, -16795, -16794, -16774, -16755, -16552, -16519, -16501, -16312, 
                -16302, -16288, -16284, -16242, -16231, -16012, -16011, -16005, -15994, -15794, -15778, -15764, -15715, -15546, -15528, -15519, 
                -15508, -15293, -15260, -15206, -15201, -15030, -15025, -14950, -14944, -14758, -14742, -14518, -14517, -14487, -14458, -14439, 
                -14437, -14433, -14270, -14207, -14181, -14180, -13995, -13984, -13721, -13705, -13490, -13462, -13453, -13443, -13442, -13439, 
                -13418, -13245, -13239, -13227, -13214, -13178, -12991, -12977, -12972, -12970, -12966, -12965, -12917, -12913, -12734, -12717, 
                -12674, -12663, -12478, -12465, -12446, -12441, -12408, -12397, -12224, -12206, -12188, -12128, -11963, -11932, -11910, -11448, 
                -11442, -11435, -11431, -11423, -11414, -11408, -11383, -11367, -11149, -11144, -11128, -11121, -10922, -10921, -10877, -10872, 
                -10867, -10680, -10661, -10643, -10636, -10418, -10413, -10388, -10176, -10163, -10047, -10034, -10012, -9881, -9804, -9797, 
                -9763, -9634, -9629, -9619, -9604, -9598, -9595, -9591, -9578, -9570, -9552, -9543, -9539, -9509, -9500, -9482, 
                -9399, -9390, -9384, -9382, -9378, -9361, -9340, -9322, -9305, -9282, -9265, -9249, -9147, -9138, -9116, -9092, 
                -9067, -9063, -9059, -9033, -9029, -9013, -9011, -9010, -8996, -8988, -8985, -8975, -8971, -8967, -8872, -8862, 
                -8848, -8832, -8799, -8771, -8766, -8746, -8739, -8576, -8559, -8547, -8543, -8531, -8514, -8473, -8468, -8329, 
                -8308, -8252, -8106, -8105, -8094, -8061, -8059, -8006, -7982, -7969, -7947, -7859, -7838, -7786, -7768, -7767, 
                -7766, -7765, -7747, -7703, -7700, -7608, -7596, -7595, -7588, -7584, -7580, -7574, -7565, -7343, -7339, -7284, 
                -7259, -7254, -7253, -7240, -7237, -7234, -7210, -7209, -7206, -7202, -7200, -7091, -7051, -7011, -6977, -6960, 
                -6950, -6824, -6757, -6752, -6727, -6726, -6723, -6705, -6702, -6695, -6592, -6576, -6566, -6550, -6486, -6451, 
                -6421, -6332, -6327, -6325, -6301, -6294, -6279, -6278, -6269, -6222, -6215, -6185, -6184, -6153, -6151, -6079, 
                -6053, -6045, -6006, -5965, -5955, -5913, -5891, -5751, -5736, -5728, -5711, -5687, -5686, -5679, -5676, -5675, 
                -5638, -5566, -5559, -5555, -5518, -5506, -5464, -5432, -5404, -5393, -5380, -5276, -5230, -5204, -5175, -5164, 
                -5011, -4992, -4969, -4927, -4882, -4873, -4794, -4793, -4791, -4776, -4767, -4755, -4715, -4704, -4696, -4695, 
                -4692, -4659, -4653, -4640, -4639, -4530, -4490, -4486, -4456, -4432, -4396, -4355, -4283, -4169, -4166, -4154, 
                -4145, -4118, -3961, -3914, -3732, -3730, -3696, -3681, -3661, -3657, -3617, -3587, -3500, -3499, -3488, -3485, 
                -3481, -3471, -3456, -3444, -3409, -3408, -3385, -3381, -3376, -3373, -3362, -3361, -3360, -3351, -3333, -3242, 
                -3204, -3202, -3180, -3139, -3136, -3124, -3108, -3100, -3098, -3095, -3001, -2990, -2989, -2969, -2961, -2956, 
                -2951, -2880, -2877, -2873, -2852, -2837, -2836, -2832, -2752, -2746, -2687, -2679, -2662, -2661, -2628, -2620, 
                -2610, -2584, -2496, -2459, -2448, -2447, -2415, -2414, -2403, -2395, -2364, -2362, -2325, -2310, -2239, -2233, 
                -2225, -2158, -2151, -2142, -2125, -2108, -2084, -2072, -2063, -2060, -2052, -1962, -1686, -1685, -1681, -1675, 
                -1667, -1662, -1658, -1644, -1463, -1187, -1179, -1174, -1128, -957, -956, -948, -902, -881, -870, -686, 
                -662, -648, -619
             });
            m_rareDict.Add('R', new int[] { 
                -32351, -32261, -32094, -32044, -31791, -31659, -31318, -31311, -31265, -31004, -30887, -30736, -30284, -30276, -30265, -30056, 
                -30050, -29863, -29834, -29818, -29817, -29806, -29754, -29722, -29702, -29603, -29600, -29469, -29324, -29225, -29098, -29091, 
                -29030, -28703, -28700, -28485, -28205, -28093, -28080, -27795, -27754, -27703, -27574, -27553, -27165, -27155, -27046, -27036, 
                -26927, -26913, -26911, -26892, -26803, -26779, -26643, -26543, -26509, -26504, -26385, -26380, -26297, -25921, -25899, -25501, 
                -25490, -25480, -25191, -24975, -24746, -24712, -24665, -24607, -24482, -24472, -24469, -24451, -24402, -24351, -21685, -21638, 
                -21383, -21379, -21364, -21129, -21122, -20893, -19379, -19121, -19095, -18846, -18843, -18807, -18598, -18596, -18567, -18092, 
                -17536, -17288, -17268, -17066, -17039, -16830, -16783, -16767, -16546, -16540, -16495, -16320, -16318, -16255, -16013, -15539, 
                -15538, -15530, -15268, -14756, -14747, -14706, -14503, -14212, -14009, -13971, -13689, -13241, -13240, -12957, -12688, -12659, 
                -12396, -12160, -12155, -12135, -11961, -11955, -11886, -11687, -11371, -10934, -10390, -10356, -10342, -10000, -9796, -9120, 
                -9102, -9072, -9061, -9017, -8997, -8983, -8973, -8822, -8726, -8585, -8582, -8536, -8520, -8330, -8091, -8078, 
                -7959, -7811, -7735, -7691, -7606, -7571, -7554, -7489, -7291, -7268, -7094, -6990, -6943, -6776, -6746, -6553, 
                -6484, -6200, -5948, -5917, -5818, -5789, -5772, -5691, -5651, -5298, -5184, -5181, -4998, -4994, -4868, -4761, 
                -4751, -4450, -4445, -4221, -4198, -4184, -4098, -3960, -3930, -3745, -3700, -3643, -3616, -3477, -3412, -3400, 
                -3387, -3346, -3246, -3194, -3096, -2943, -2853, -2587, -2453, -2435, -2412, -2192, -2121, -2089, -1971, -1938, 
                -1893, -1890, -1646, -1451
             });
            m_rareDict.Add('S', new int[] { 
                -32447, -32442, -32412, -32401, -32383, -32382, -32352, -32309, -32293, -32278, -32259, -32180, -32162, -32152, -32126, -32117, 
                -32111, -32099, -32081, -32049, -32047, -32034, -32029, -32023, -32010, -32005, -31918, -31881, -31869, -31843, -31811, -31806, 
                -31776, -31760, -31680, -31640, -31601, -31590, -31527, -31523, -31401, -31390, -31376, -31374, -31353, -31325, -31324, -31321, 
                -31314, -31274, -31270, -31263, -31135, -31106, -31030, -31011, -30994, -30992, -30911, -30892, -30854, -30763, -30630, -30605, 
                -30570, -30532, -30498, -30385, -30384, -30358, -30347, -30322, -30312, -30245, -30242, -30235, -30115, -30067, -30055, -30021, 
                -30018, -29991, -29972, -29833, -29803, -29742, -29741, -29712, -29698, -29621, -29617, -29593, -29567, -29555, -29553, -29525, 
                -29498, -29479, -29466, -29347, -29322, -29248, -29226, -29224, -29051, -29029, -29028, -29025, -28997, -28940, -28939, -28935, 
                -28862, -28861, -28848, -28815, -28813, -28806, -28796, -28787, -28584, -28578, -28564, -28554, -28448, -28443, -28440, -28427, 
                -28333, -28326, -28322, -28318, -28280, -28263, -28255, -28243, -28200, -28086, -27987, -27969, -27960, -27954, -27937, -27930, 
                -27909, -27830, -27792, -27791, -27775, -27753, -27751, -27743, -27718, -27658, -27556, -27526, -27467, -27461, -27442, -27409, 
                -27400, -27323, -27314, -27303, -27278, -27259, -27249, -27219, -27178, -27174, -27172, -27151, -27144, -27142, -27019, -27003, 
                -26983, -26980, -26969, -26955, -26954, -26953, -26952, -26939, -26938, -26894, -26888, -26811, -26765, -26710, -26666, -26664, 
                -26634, -26538, -26535, -26518, -26508, -26501, -26500, -26493, -26470, -26458, -26434, -26430, -26423, -26416, -26409, -26396, 
                -26392, -26375, -26284, -26282, -26269, -26256, -26240, -26239, -26200, -26184, -26171, -26148, -26147, -26042, -26003, -26001, 
                -25999, -25998, -25987, -25981, -25967, -25950, -25926, -25911, -25909, -25908, -25904, -25897, -25887, -25876, -25743, -25725, 
                -25723, -25720, -25705, -25685, -25672, -25628, -25627, -25625, -25611, -25495, -25469, -25445, -25438, -25436, -25403, -25392, 
                -25390, -25381, -25377, -25376, -25375, -25359, -25278, -25277, -25215, -25194, -25190, -25179, -25175, -25171, -25170, -25153, 
                -25140, -25124, -25114, -25109, -25107, -25103, -25102, -24997, -24983, -24970, -24958, -24941, -24926, -24920, -24856, -24840, 
                -24743, -24700, -24698, -24661, -24653, -24636, -24586, -24579, -24476, -24463, -24395, -24367, -21945, -21935, -21901, -21898, 
                -21893, -21867, -21690, -21676, -21640, -21637, -21636, -21618, -21422, -21365, -21363, -21160, -21143, -21142, -21135, -21115, 
                -20896, -20892, -20891, -20880, -20667, -20646, -20631, -20628, -20611, -20588, -20584, -20583, -20400, -20125, -20119, -20115, 
                -20109, -20104, -20072, -20067, -19863, -19856, -19853, -19836, -19811, -19808, -19622, -19569, -19561, -19372, -19318, -19310, 
                -19100, -19083, -19077, -19062, -18876, -18868, -18860, -18856, -18800, -18597, -18593, -18588, -18571, -18569, -18554, -18548, 
                -18368, -18334, -18327, -18318, -18313, -18292, -18282, -18274, -18107, -18093, -18073, -18032, -17847, -17831, -17813, -17801, 
                -17798, -17791, -17777, -17765, -17760, -17584, -17559, -17552, -17550, -17523, -17342, -17326, -17322, -17321, -17314, -17303, 
                -17278, -17274, -17251, -17086, -17078, -17070, -17030, -17016, -17001, -16814, -16775, -16756, -16567, -16551, -16548, -16535, 
                -16525, -16503, -16497, -16493, -16488, -16487, -16309, -16306, -16294, -16292, -16267, -16246, -16225, -16053, -16047, -15999, 
                -15997, -15972, -15968, -15747, -15723, -15722, -15550, -15549, -15476, -15457, -15287, -15271, -15258, -15256, -15000, -14997, 
                -14781, -14762, -14719, -14513, -14499, -14486, -14253, -14192, -14178, -14012, -14004, -14002, -14000, -13968, -13966, -13946, 
                -13750, -13749, -13743, -13723, -13713, -13686, -13679, -13674, -13672, -13668, -13491, -13482, -13473, -13438, -13422, -13237, 
                -13226, -13152, -12923, -12736, -12718, -12697, -12684, -12665, -12476, -12447, -12422, -12409, -12209, -12185, -12148, -11946, 
                -11941, -11933, -11880, -11872, -11703, -11680, -11666, -11652, -11627, -11626, -11456, -11428, -11412, -11400, -11368, -11199, 
                -11198, -11185, -11183, -11178, -11175, -11129, -11126, -11114, -10920, -10910, -10906, -10904, -10900, -10894, -10850, -10654, 
                -10639, -10619, -10592, -10414, -10409, -10404, -10391, -10371, -10337, -10159, -10116, -10074, -10067, -10044, -10041, -10037, 
                -10003, -9918, -9909, -9884, -9880, -9872, -9865, -9845, -9840, -9824, -9799, -9793, -9764, -9747, -9746, -9656, 
                -9635, -9612, -9608, -9567, -9560, -9545, -9531, -9529, -9515, -9514, -9380, -9327, -9289, -9281, -9275, -9271, 
                -9268, -9261, -9233, -9232, -9227, -9071, -9069, -9053, -9009, -8871, -8858, -8855, -8812, -8795, -8790, -8780, 
                -8777, -8769, -8764, -8744, -8727, -8716, -8712, -8623, -8583, -8524, -8461, -8457, -8454, -8381, -8363, -8359, 
                -8343, -8339, -8336, -8323, -8307, -8299, -8289, -8271, -8240, -8237, -8209, -8194, -8089, -8082, -8025, -8014, 
                -8004, -7998, -7990, -7979, -7961, -7833, -7810, -7797, -7796, -7777, -7742, -7725, -7724, -7702, -7689, -7688, 
                -7604, -7541, -7530, -7523, -7522, -7519, -7514, -7496, -7493, -7480, -7476, -7456, -7444, -7358, -7352, -7350, 
                -7318, -7306, -7288, -7260, -7238, -7227, -7201, -7199, -7184, -7180, -7101, -7098, -7073, -7050, -6989, -6975, 
                -6967, -6964, -6959, -6948, -6920, -6919, -6918, -6917, -6810, -6763, -6756, -6751, -6684, -6663, -6582, -6559, 
                -6551, -6548, -6542, -6533, -6532, -6531, -6515, -6513, -6507, -6499, -6490, -6487, -6483, -6474, -6445, -6441, 
                -6431, -6413, -6316, -6304, -6291, -6286, -6281, -6249, -6245, -6237, -6220, -6217, -6207, -6190, -6036, -6032, 
                -5956, -5896, -5802, -5801, -5794, -5788, -5782, -5756, -5748, -5698, -5693, -5660, -5640, -5526, -5512, -5500, 
                -5499, -5486, -5431, -5413, -5379, -5299, -5293, -5267, -5264, -5209, -5208, -5169, -5157, -5134, -5123, -5122, 
                -4989, -4966, -4954, -4950, -4948, -4945, -4926, -4904, -4899, -4895, -4886, -4885, -4749, -4712, -4706, -4641, 
                -4622, -4619, -4612, -4524, -4484, -4469, -4447, -4444, -4428, -4404, -4379, -4378, -4269, -4260, -4256, -4254, 
                -4241, -4236, -4230, -4226, -4203, -4201, -4191, -4188, -4152, -4149, -4110, -4104, -4019, -3987, -3980, -3968, 
                -3965, -3933, -3912, -3874, -3856, -3842, -3744, -3710, -3706, -3695, -3682, -3659, -3606, -3507, -3496, -3476, 
                -3472, -3459, -3458, -3454, -3437, -3414, -3377, -3369, -3367, -3340, -3252, -3240, -3238, -3220, -3199, -3175, 
                -3174, -3168, -3161, -3152, -3147, -3134, -3121, -3117, -3105, -3102, -3079, -3006, -2996, -2993, -2964, -2933, 
                -2928, -2920, -2898, -2887, -2884, -2876, -2872, -2858, -2726, -2721, -2691, -2688, -2681, -2678, -2673, -2672, 
                -2664, -2649, -2631, -2617, -2564, -2472, -2471, -2441, -2436, -2427, -2424, -2423, -2411, -2401, -2398, -2386, 
                -2368, -2347, -2331, -2328, -2315, -2306, -2220, -2216, -2202, -2201, -2194, -2188, -2157, -2131, -2070, -1969, 
                -1697, -1691, -1668, -1650, -1456, -1434, -1413, -1405, -1399, -1195, -1188, -1176, -1164, -877, -869, -868, 
                -867, -700
             });
            m_rareDict.Add('T', new int[] { 
                -32361, -32327, -32277, -32188, -32181, -32179, -32175, -32127, -32088, -32054, -32038, -32024, -31922, -31915, -31901, -31864, 
                -31837, -31831, -31825, -31817, -31796, -31768, -31758, -31594, -31576, -31354, -31352, -31273, -31261, -31249, -31243, -31238, 
                -31161, -31156, -31124, -31094, -31084, -31058, -31056, -31015, -30982, -30912, -30894, -30877, -30864, -30826, -30814, -30779, 
                -30750, -30740, -30739, -30734, -30653, -30652, -30651, -30650, -30643, -30642, -30620, -30610, -30606, -30523, -30521, -30496, 
                -30473, -30380, -30372, -30348, -30329, -30319, -30309, -30304, -30289, -30270, -30213, -30073, -30024, -30009, -29999, -29966, 
                -29963, -29839, -29801, -29785, -29718, -29620, -29601, -29591, -29563, -29506, -29500, -29489, -29443, -29375, -29369, -29363, 
                -29320, -29308, -29272, -29259, -29244, -29215, -29003, -29000, -28968, -28956, -28953, -28950, -28849, -28831, -28828, -28804, 
                -28726, -28717, -28697, -28682, -28681, -28601, -28582, -28534, -28508, -28491, -28471, -28418, -28350, -28335, -28321, -28303, 
                -28283, -28264, -28257, -28196, -28168, -28028, -27992, -27989, -27972, -27959, -27945, -27944, -27917, -27812, -27770, -27763, 
                -27731, -27717, -27671, -27579, -27558, -27552, -27518, -27514, -27477, -27455, -27437, -27394, -27320, -27279, -27270, -27253, 
                -27194, -27182, -27181, -27150, -27063, -27058, -27053, -27028, -26786, -26772, -26749, -26745, -26632, -26626, -26537, -26524, 
                -26505, -26503, -26491, -26478, -26460, -26433, -26412, -26372, -26296, -26236, -26235, -26232, -26027, -26023, -25969, -25924, 
                -25907, -25905, -25900, -25862, -25790, -25783, -25744, -25694, -25649, -25634, -25632, -25620, -25615, -25608, -25524, -25485, 
                -25457, -25442, -25437, -25432, -25429, -25396, -25248, -25246, -25242, -25241, -25237, -25222, -25184, -25180, -25110, -25091, 
                -24919, -24859, -24857, -24754, -24752, -24724, -24679, -24650, -24617, -24580, -24509, -24499, -24477, -24446, -24441, -24403, 
                -24381, -24363, -21944, -21943, -21908, -21871, -21688, -21602, -21435, -21409, -21386, -21355, -21351, -21345, -21146, -21141, 
                -21117, -20900, -20872, -20861, -20839, -20644, -20643, -20639, -20634, -20603, -20381, -20131, -20095, -20071, -19882, -19873, 
                -19816, -19615, -19376, -19365, -19354, -19353, -19349, -19093, -19080, -19058, -18869, -18866, -18844, -18814, -18796, -18795, 
                -18591, -18574, -18562, -18359, -18357, -18084, -18070, -18056, -17844, -17815, -17594, -17593, -17588, -17580, -17576, -17530, 
                -17521, -17341, -17327, -17311, -17305, -17283, -17082, -17081, -17052, -17031, -17014, -17008, -17007, -17002, -16812, -16793, 
                -16746, -16737, -16545, -16537, -16532, -16249, -16233, -16227, -16056, -15781, -15753, -15750, -15734, -15721, -15713, -15712, 
                -15518, -15496, -15479, -15474, -15469, -15467, -15257, -15232, -15226, -15207, -15009, -15006, -14998, -14996, -14991, -14986, 
                -14773, -14760, -14488, -14463, -14432, -14263, -14262, -14250, -14245, -14197, -13988, -13959, -13950, -13942, -13940, -13932, 
                -13929, -13714, -13693, -13485, -13484, -13421, -13420, -13243, -13236, -13211, -13180, -13172, -12971, -12939, -12911, -12727, 
                -12702, -12682, -12679, -12641, -12477, -12445, -12163, -12154, -12133, -11927, -11909, -11908, -11895, -11889, -11674, -11621, 
                -11453, -11424, -11375, -11366, -11140, -10928, -10889, -10876, -10682, -10656, -10640, -10630, -10412, -10406, -10386, -10343, 
                -10150, -10105, -10099, -10090, -10083, -10063, -10053, -10009, -9906, -9871, -9823, -9822, -9812, -9789, -9778, -9769, 
                -9766, -9765, -9643, -9638, -9615, -9596, -9577, -9348, -9347, -9341, -9329, -9315, -9310, -9296, -9241, -9148, 
                -9117, -9106, -9088, -9085, -9068, -9054, -8986, -8979, -8976, -8803, -8783, -8762, -8757, -8733, -8578, -8573, 
                -8561, -8521, -8496, -8494, -8483, -8368, -8360, -8347, -8318, -8309, -8273, -8258, -8197, -8081, -7988, -7941, 
                -7860, -7845, -7839, -7818, -7599, -7551, -7542, -7492, -7491, -7467, -7430, -7344, -7321, -7314, -7298, -7277, 
                -7276, -7255, -7229, -7221, -7207, -7173, -7086, -7060, -7056, -7032, -7028, -7019, -6996, -6942, -6937, -6916, 
                -6838, -6827, -6816, -6780, -6771, -6703, -6691, -6680, -6590, -6552, -6536, -6522, -6504, -6461, -6323, -6276, 
                -6266, -6255, -6224, -6210, -6074, -5998, -5987, -5975, -5958, -5928, -5912, -5819, -5757, -5749, -5699, -5684, 
                -5678, -5659, -5564, -5562, -5553, -5543, -5536, -5515, -5444, -5419, -5305, -5296, -5224, -5180, -5152, -5128, 
                -5044, -5014, -5008, -4982, -4974, -4968, -4965, -4961, -4922, -4907, -4894, -4874, -4867, -4866, -4786, -4785, 
                -4779, -4745, -4693, -4685, -4667, -4664, -4516, -4514, -4509, -4502, -4501, -4498, -4492, -4483, -4431, -4426, 
                -4406, -4399, -4393, -4381, -4376, -4282, -4267, -4224, -4222, -4212, -4207, -4204, -4197, -4192, -4186, -4181, 
                -4156, -4133, -4126, -3992, -3986, -3979, -3975, -3944, -3901, -3769, -3753, -3752, -3714, -3708, -3707, -3702, 
                -3699, -3653, -3629, -3603, -3589, -3518, -3516, -3504, -3482, -3474, -3473, -3466, -3431, -3427, -3375, -3352, 
                -3261, -3255, -3227, -3224, -3209, -3187, -3173, -3163, -3157, -3116, -3094, -2957, -2939, -2931, -2870, -2864, 
                -2748, -2732, -2710, -2693, -2675, -2654, -2647, -2642, -2639, -2623, -2615, -2612, -2469, -2419, -2404, -2390, 
                -2378, -2370, -2344, -2330, -2232, -2217, -2173, -2165, -2154, -2141, -2117, -2095, -2094, -2088, -1934, -1913, 
                -1911, -1719, -1717, -1705, -1703, -1678, -1643, -1641, -1635, -1453, -1437, -1435, -1432, -1428, -1425, -1406, 
                -1389, -1383, -938, -937, -928, -893, -879, -878, -872, -866, -701, -666
             });
            m_rareDict.Add('W', new int[] { 
                -32425, -32418, -32368, -32365, -32347, -32343, -32336, -32169, -32133, -32105, -32091, -32084, -32050, -31906, -31856, -31836, 
                -31801, -31652, -31603, -31554, -31531, -31388, -31387, -31312, -31289, -31280, -31278, -31272, -31267, -31241, -31158, -31122, 
                -31103, -31083, -31082, -31049, -31038, -31022, -31003, -31000, -30996, -30874, -30825, -30726, -30530, -30491, -30393, -30382, 
                -30371, -30363, -30326, -30307, -30269, -30257, -30227, -30226, -30124, -30122, -30096, -30080, -30023, -30013, -29997, -29995, 
                -29968, -29967, -29954, -29865, -29857, -29842, -29831, -29830, -29773, -29614, -29552, -29515, -29514, -29513, -29476, -29468, 
                -29459, -29455, -29345, -29339, -29315, -29287, -29258, -29251, -29241, -29234, -29099, -29038, -29018, -29010, -28988, -28864, 
                -28844, -28810, -28771, -28760, -28748, -28744, -28742, -28722, -28693, -28692, -28691, -28687, -28677, -28567, -28526, -28518, 
                -28499, -28468, -28466, -28269, -28253, -28088, -28082, -28069, -28066, -28059, -27966, -27957, -27956, -27949, -27942, -27940, 
                -27929, -27833, -27802, -27800, -27767, -27765, -27757, -27690, -27677, -27669, -27515, -27498, -27443, -27318, -27286, -27254, 
                -27242, -27239, -27227, -27214, -27054, -27034, -27033, -27018, -27002, -26797, -26775, -26756, -26721, -26699, -26661, -26660, 
                -26649, -26548, -26536, -26506, -26386, -26146, -25990, -25971, -25865, -25708, -25698, -25676, -25666, -25616, -25613, -25502, 
                -25486, -25483, -25481, -25455, -25409, -25394, -25387, -25385, -25384, -25371, -25238, -25202, -25199, -25185, -25172, -25117, 
                -25112, -25092, -25016, -25005, -24993, -24969, -24968, -24909, -24887, -24855, -24843, -24839, -24721, -24701, -24694, -24680, 
                -24669, -24643, -24630, -24611, -24490, -24431, -24366, -24352, -21911, -21662, -21604, -21600, -21440, -21420, -21411, -21410, 
                -21380, -21361, -21360, -21171, -21170, -21128, -21106, -21088, -20905, -20903, -20868, -20601, -20407, -20404, -20156, -20134, 
                -20069, -19879, -19876, -19847, -19638, -19630, -19621, -19595, -19587, -19383, -19373, -19350, -19345, -19071, -19041, -18585, 
                -18560, -18541, -18537, -18536, -18365, -18364, -18352, -18303, -18294, -18023, -17540, -17289, -17287, -17021, -16817, -16813, 
                -16811, -16809, -16749, -16747, -16575, -16566, -16550, -16248, -16230, -16041, -15804, -15754, -15740, -15728, -15529, -15487, 
                -15486, -15281, -15266, -15259, -15222, -15218, -15024, -14945, -14759, -14757, -14716, -14703, -14699, -14507, -14496, -14473, 
                -14468, -14453, -14268, -14234, -14226, -14188, -14186, -14006, -13986, -13930, -13716, -13681, -13675, -13665, -13496, -13467, 
                -13464, -13417, -13412, -13194, -12976, -12969, -12962, -12921, -12721, -12716, -12714, -12708, -12693, -12689, -12671, -12662, 
                -12657, -12643, -12473, -12462, -12425, -12180, -12177, -11890, -11707, -11667, -11455, -11433, -11395, -11390, -11388, -11115, 
                -10937, -10913, -10912, -10893, -10874, -10658, -10596, -10417, -10370, -10360, -10130, -10087, -10077, -10024, -10016, -10008, 
                -9996, -9995, -9834, -9791, -9781, -9745, -9664, -9602, -9585, -9533, -9501, -9487, -9485, -9479, -9374, -9373, 
                -9364, -9256, -9134, -9126, -9122, -9031, -9012, -8853, -8850, -8839, -8808, -8789, -8776, -8750, -8742, -8722, 
                -8635, -8604, -8574, -8562, -8527, -8525, -8383, -8352, -8304, -8292, -8114, -8073, -8060, -8052, -8008, -7955, 
                -7944, -7849, -7775, -7774, -7733, -7731, -7611, -7546, -7509, -7508, -7472, -7452, -7448, -7249, -7225, -7213, 
                -7189, -7187, -7077, -7062, -7058, -7057, -7006, -6988, -6986, -6953, -6835, -6799, -6797, -6779, -6778, -6761, 
                -6725, -6717, -6700, -6660, -6554, -6539, -6530, -6510, -6476, -6472, -6460, -6416, -6403, -6335, -6214, -6174, 
                -6146, -5986, -5961, -5960, -5957, -5770, -5745, -5740, -5734, -5731, -5634, -5557, -5542, -5502, -5474, -5466, 
                -5387, -5306, -5265, -5239, -5220, -5185, -5148, -5136, -5050, -5049, -5037, -4995, -4987, -4929, -4919, -4912, 
                -4765, -4762, -4759, -4756, -4748, -4740, -4736, -4654, -4542, -4527, -4478, -4461, -4427, -4259, -4003, -3990, 
                -3977, -3958, -3900, -3891, -3859, -3852, -3762, -3742, -3492, -3366, -3350, -3237, -3236, -3235, -2926, -2923, 
                -2886, -2741, -2716, -2706, -2680, -2457, -2456, -2438, -2432, -2429, -2413, -2391, -2373, -2360, -2341, -2153, 
                -2152, -2147, -2099, -2055, -1959, -1942, -1933, -1908, -1715, -1698, -1466, -1457, -1410, -1181, -1172, -900, 
                -875, -696, -695, -690, -643, -630
             });
            m_rareDict.Add('X', new int[] { 
                -32446, -32404, -32375, -32359, -32322, -32321, -32319, -32316, -32315, -32295, -32289, -32279, -32270, -32263, -32176, -32173, 
                -32172, -32160, -32158, -32157, -32150, -32142, -32122, -32069, -32060, -32059, -32046, -32035, -32027, -32019, -31932, -31923, 
                -31897, -31891, -31890, -31832, -31820, -31781, -31770, -31676, -31553, -31532, -31529, -31518, -31509, -31508, -31504, -31397, 
                -31393, -31389, -31386, -31381, -31380, -31369, -31302, -31260, -31237, -31167, -31165, -31164, -31159, -31151, -31142, -31092, 
                -31086, -31067, -31036, -31008, -30909, -30902, -30890, -30885, -30882, -30878, -30875, -30863, -30859, -30856, -30845, -30833, 
                -30824, -30816, -30789, -30787, -30772, -30762, -30631, -30625, -30599, -30571, -30562, -30561, -30554, -30392, -30391, -30369, 
                -30362, -30282, -30280, -30261, -30247, -30231, -30230, -30127, -30104, -30084, -30072, -30064, -30046, -30037, -30025, -30016, 
                -30008, -29998, -29986, -29973, -29956, -29875, -29844, -29838, -29824, -29793, -29768, -29767, -29759, -29756, -29737, -29711, 
                -29622, -29609, -29590, -29586, -29551, -29532, -29521, -29520, -29503, -29496, -29494, -29487, -29484, -29478, -29475, -29446, 
                -29362, -29325, -29317, -29242, -29203, -29199, -29113, -29084, -29011, -28974, -28951, -28933, -28832, -28778, -28743, -28729, 
                -28720, -28707, -28689, -28678, -28676, -28593, -28590, -28586, -28583, -28577, -28571, -28558, -28548, -28531, -28506, -28487, 
                -28469, -28464, -28433, -28428, -28424, -28351, -28286, -28285, -28272, -28265, -28260, -28237, -28206, -28174, -28079, -28074, 
                -28016, -27994, -27827, -27808, -27807, -27781, -27704, -27699, -27681, -27653, -27560, -27545, -27527, -27507, -27493, -27486, 
                -27476, -27473, -27464, -27454, -27453, -27452, -27395, -27326, -27310, -27299, -27292, -27289, -27276, -27267, -27263, -27260, 
                -27247, -27238, -27232, -27205, -27197, -27190, -27180, -27173, -27139, -27032, -27015, -27006, -26989, -26978, -26976, -26923, 
                -26919, -26887, -26812, -26802, -26770, -26751, -26676, -26655, -26644, -26539, -26522, -26498, -26481, -26436, -26403, -26401, 
                -26391, -26370, -26285, -26267, -26164, -26154, -26120, -26118, -26047, -26040, -26030, -26021, -26017, -25986, -25946, -25938, 
                -25923, -25920, -25885, -25772, -25771, -25721, -25703, -25687, -25680, -25633, -25621, -25492, -25451, -25408, -25372, -25365, 
                -25352, -25350, -25261, -25244, -25229, -25216, -25211, -25198, -25195, -25183, -25155, -25152, -25142, -25139, -25018, -24991, 
                -24978, -24972, -24967, -24906, -24900, -24899, -24894, -24876, -24871, -24864, -24863, -24851, -24847, -24846, -24845, -24837, 
                -24834, -24756, -24748, -24744, -24738, -24737, -24733, -24723, -24709, -24685, -24677, -24676, -24645, -24644, -24601, -24600, 
                -24598, -24591, -24583, -24512, -24501, -24497, -24488, -24480, -24465, -24456, -24455, -24372, -24361, -24354, -24331, -24324, 
                -21951, -21946, -21940, -21939, -21930, -21869, -21868, -21859, -21858, -21687, -21682, -21678, -21644, -21624, -21621, -21619, 
                -21615, -21613, -21612, -21609, -21434, -21429, -21428, -21426, -21387, -21385, -21376, -21168, -21166, -21132, -21130, -21107, 
                -20911, -20661, -20660, -20652, -20635, -20632, -20596, -20414, -20409, -20385, -20346, -20341, -20146, -20141, -20130, -20120, 
                -20090, -20075, -20074, -19892, -19891, -19883, -19881, -19855, -19848, -19834, -19825, -19577, -19576, -19369, -19357, -19314, 
                -19305, -19115, -19091, -19068, -19040, -18864, -18845, -18839, -18801, -18608, -18602, -18578, -18533, -18528, -18353, -18105, 
                -18076, -18063, -18034, -18031, -18029, -18021, -18018, -17837, -17795, -17779, -17554, -17512, -17335, -17330, -17319, -17294, 
                -17254, -17076, -17045, -17043, -17035, -17028, -17013, -17009, -17006, -17004, -16831, -16815, -16789, -16787, -16777, -16773, 
                -16772, -16768, -16743, -16571, -16568, -16549, -16536, -16523, -16511, -16508, -16499, -16496, -16494, -16317, -16313, -16291, 
                -16285, -16279, -16275, -16266, -16265, -16251, -16247, -16245, -16239, -16009, -15986, -15979, -15978, -15977, -15973, -15807, 
                -15791, -15739, -15525, -15510, -15502, -15493, -15492, -15490, -15485, -15470, -15250, -15235, -15227, -15219, -15203, -15040, 
                -15038, -15017, -15010, -15008, -15004, -15001, -14990, -14981, -14954, -14754, -14730, -14728, -14709, -14494, -14482, -14470, 
                -14469, -14235, -14229, -14224, -14211, -14008, -13991, -13989, -13974, -13964, -13957, -13742, -13684, -13678, -13677, -13669, 
                -13666, -13504, -13497, -13478, -13472, -13435, -13434, -13246, -13231, -13228, -13222, -13220, -13177, -13171, -13168, -13165, 
                -13153, -12982, -12944, -12928, -12915, -12907, -12904, -12731, -12700, -12696, -12687, -12686, -12656, -12461, -12451, -12437, 
                -12426, -12423, -12410, -12403, -12400, -12398, -12220, -12208, -12191, -12186, -12162, -12145, -12130, -11950, -11904, -11709, 
                -11708, -11690, -11689, -11664, -11659, -11658, -11646, -11616, -11454, -11407, -11401, -11379, -11374, -11370, -11364, -11196, 
                -11189, -11187, -11181, -11173, -11145, -11134, -11133, -11127, -11116, -11106, -10917, -10914, -10895, -10892, -10854, -10851, 
                -10685, -10676, -10664, -10657, -10646, -10644, -10632, -10608, -10594, -10432, -10408, -10403, -10352, -10341, -10340, -10336, 
                -10174, -10168, -10158, -10137, -10132, -10103, -10058, -9893, -9886, -9868, -9783, -9774, -9768, -9758, -9757, -9740, 
                -9730, -9660, -9653, -9644, -9642, -9639, -9632, -9623, -9616, -9610, -9540, -9526, -9522, -9494, -9484, -9397, 
                -9326, -9313, -9304, -9299, -9277, -9276, -9274, -9257, -9225, -9123, -9119, -9112, -9076, -9074, -9040, -9030, 
                -9028, -9016, -8972, -8969, -8800, -8782, -8770, -8743, -8737, -8730, -8709, -8633, -8551, -8541, -8538, -8529, 
                -8519, -8518, -8503, -8465, -8348, -8328, -8300, -8286, -8279, -8232, -8227, -8207, -8127, -8123, -8109, -8097, 
                -8084, -8083, -8079, -8072, -8058, -8055, -7963, -7872, -7803, -7763, -7754, -7746, -7739, -7713, -7709, -7694, 
                -7683, -7603, -7598, -7572, -7556, -7501, -7500, -7490, -7485, -7478, -7469, -7468, -7459, -7426, -7357, -7329, 
                -7313, -7286, -7275, -7274, -7252, -7214, -7175, -7090, -7076, -7052, -7043, -6998, -6995, -6991, -6981, -6976, 
                -6963, -6957, -6954, -6939, -6932, -6922, -6815, -6794, -6782, -6766, -6740, -6704, -6694, -6689, -6686, -6682, 
                -6673, -6579, -6572, -6561, -6520, -6503, -6501, -6475, -6446, -6425, -6408, -6314, -6307, -6306, -6290, -6289, 
                -6275, -6235, -6225, -6211, -6189, -6161, -6156, -6062, -6048, -6026, -6014, -6012, -5995, -5991, -5978, -5969, 
                -5943, -5932, -5931, -5902, -5787, -5783, -5704, -5697, -5689, -5672, -5549, -5533, -5504, -5501, -5496, -5485, 
                -5480, -5441, -5423, -5418, -5416, -5398, -5301, -5291, -5282, -5254, -5247, -5201, -5047, -5035, -4956, -4953, 
                -4952, -4923, -4909, -4898, -4893, -4892, -4884, -4871, -4869, -4797, -4784, -4775, -4768, -4732, -4731, -4730, 
                -4719, -4713, -4710, -4708, -4684, -4662, -4660, -4645, -4628, -4473, -4454, -4377, -4288, -4272, -4264, -4263, 
                -4251, -4239, -4128, -4031, -4026, -4017, -4009, -3983, -3971, -3957, -3949, -3940, -3926, -3908, -3902, -3865, 
                -3857, -3763, -3759, -3750, -3697, -3658, -3649, -3613, -3517, -3512, -3480, -3465, -3452, -3440, -3436, -3399, 
                -3359, -3254, -3250, -3243, -3218, -3211, -3195, -3165, -3156, -3155, -3135, -3110, -3101, -3089, -2992, -2980, 
                -2979, -2959, -2950, -2912, -2902, -2888, -2869, -2868, -2863, -2854, -2846, -2733, -2719, -2702, -2696, -2666, 
                -2660, -2653, -2641, -2635, -2632, -2627, -2608, -2607, -2573, -2569, -2467, -2439, -2434, -2383, -2354, -2337, 
                -2336, -2240, -2228, -2224, -2221, -2212, -2210, -2208, -2182, -2176, -2146, -2136, -2100, -2097, -2085, -2065, 
                -2053, -1925, -1901, -1889, -1888, -1708, -1458, -1452, -1446, -1430, -1391, -1390, -1382, -1381, -1376, -1186, 
                -1184, -1135, -929, -699, -693, -691, -674, -671, -661, -614
             });
            m_rareDict.Add('Y', new int[] { 
                -32448, -32438, -32427, -32422, -32419, -32403, -32389, -32384, -32380, -32378, -32373, -32372, -32346, -32339, -32335, -32331, 
                -32325, -32310, -32308, -32298, -32274, -32272, -32174, -32168, -32164, -32145, -32143, -32136, -32100, -32097, -32090, -32087, 
                -32076, -32074, -32071, -32070, -32061, -32045, -32042, -32026, -32025, -32022, -32008, -31934, -31921, -31899, -31896, -31888, 
                -31880, -31876, -31860, -31847, -31842, -31824, -31812, -31798, -31793, -31790, -31780, -31778, -31752, -31627, -31607, -31566, 
                -31561, -31555, -31542, -31530, -31528, -31517, -31502, -31495, -31492, -31418, -31408, -31395, -31367, -31364, -31357, -31348, 
                -31342, -31337, -31336, -31335, -31316, -31299, -31296, -31276, -31259, -31254, -31252, -31245, -31154, -31148, -31132, -31131, 
                -31126, -31123, -31117, -31102, -31095, -31076, -31071, -31066, -31053, -31048, -31046, -31043, -31041, -31031, -31027, -31023, 
                -31021, -31014, -31010, -30893, -30865, -30857, -30855, -30853, -30852, -30846, -30843, -30841, -30839, -30831, -30823, -30810, 
                -30808, -30807, -30798, -30784, -30782, -30766, -30752, -30748, -30745, -30732, -30725, -30656, -30655, -30654, -30647, -30644, 
                -30638, -30637, -30624, -30604, -30582, -30576, -30572, -30557, -30556, -30548, -30536, -30534, -30517, -30506, -30501, -30488, 
                -30481, -30478, -30472, -30388, -30387, -30365, -30330, -30302, -30295, -30291, -30278, -30271, -30260, -30254, -30241, -30240, 
                -30212, -30144, -30135, -30117, -30099, -30091, -30088, -30086, -30074, -30071, -30054, -30032, -30027, -30026, -30006, -29996, 
                -29993, -29992, -29887, -29880, -29879, -29872, -29871, -29867, -29866, -29850, -29845, -29823, -29820, -29819, -29808, -29804, 
                -29795, -29794, -29792, -29791, -29789, -29758, -29753, -29747, -29746, -29734, -29724, -29719, -29717, -29715, -29707, -29705, 
                -29699, -29627, -29619, -29613, -29605, -29599, -29598, -29592, -29577, -29562, -29547, -29546, -29518, -29512, -29463, -29461, 
                -29449, -29349, -29338, -29335, -29332, -29326, -29316, -29311, -29298, -29291, -29281, -29277, -29276, -29273, -29271, -29264, 
                -29257, -29253, -29252, -29238, -29229, -29202, -29194, -29119, -29117, -29114, -29111, -29110, -29109, -29107, -29094, -29093, 
                -29092, -29085, -29081, -29079, -29070, -29069, -29068, -29066, -29053, -29035, -29034, -29009, -28962, -28958, -28955, -28946, 
                -28937, -28854, -28851, -28833, -28830, -28827, -28819, -28817, -28798, -28795, -28765, -28764, -28763, -28762, -28761, -28759, 
                -28758, -28755, -28751, -28711, -28698, -28694, -28685, -28608, -28598, -28595, -28591, -28581, -28570, -28559, -28552, -28546, 
                -28544, -28542, -28541, -28540, -28529, -28522, -28495, -28482, -28479, -28461, -28458, -28451, -28447, -28444, -28441, -28430, 
                -28422, -28421, -28352, -28349, -28324, -28310, -28306, -28288, -28287, -28261, -28246, -28245, -28239, -28235, -28234, -28220, 
                -28215, -28192, -28179, -28178, -28169, -28164, -28163, -28162, -28076, -28070, -28064, -28060, -28052, -28047, -28044, -28041, 
                -28034, -28017, -27995, -27993, -27980, -27968, -27963, -27947, -27927, -27923, -27921, -27839, -27837, -27826, -27824, -27822, 
                -27803, -27787, -27726, -27711, -27700, -27670, -27667, -27652, -27584, -27575, -27573, -27572, -27551, -27540, -27532, -27529, 
                -27505, -27488, -27481, -27479, -27474, -27463, -27458, -27445, -27439, -27435, -27419, -27410, -27399, -27328, -27324, -27306, 
                -27301, -27287, -27244, -27235, -27234, -27230, -27229, -27222, -27220, -27210, -27189, -27185, -27184, -27175, -27168, -27166, 
                -27158, -27149, -27147, -27146, -27072, -27056, -27024, -27021, -27014, -26995, -26991, -26988, -26985, -26972, -26971, -26970, 
                -26966, -26957, -26950, -26932, -26924, -26920, -26907, -26901, -26896, -26895, -26891, -26884, -26816, -26808, -26794, -26792, 
                -26761, -26727, -26726, -26715, -26714, -26713, -26711, -26689, -26665, -26656, -26654, -26653, -26651, -26646, -26642, -26640, 
                -26560, -26559, -26557, -26556, -26553, -26551, -26549, -26531, -26523, -26521, -26516, -26510, -26476, -26465, -26455, -26449, 
                -26413, -26404, -26400, -26376, -26292, -26271, -26262, -26243, -26237, -26225, -26222, -26219, -26206, -26188, -26177, -26168, 
                -26159, -26157, -26156, -26155, -26140, -26133, -26125, -26122, -26115, -26032, -26031, -26029, -26028, -26019, -26013, -26011, 
                -25995, -25988, -25979, -25978, -25977, -25972, -25966, -25951, -25947, -25939, -25890, -25883, -25881, -25880, -25867, -25860, 
                -25792, -25791, -25773, -25770, -25769, -25767, -25746, -25741, -25739, -25737, -25714, -25712, -25699, -25691, -25686, -25674, 
                -25663, -25659, -25658, -25650, -25630, -25623, -25602, -25523, -25515, -25511, -25506, -25503, -25499, -25491, -25477, -25472, 
                -25471, -25447, -25446, -25441, -25435, -25426, -25423, -25418, -25413, -25407, -25404, -25402, -25400, -25379, -25378, -25362, 
                -25356, -25351, -25272, -25269, -25265, -25263, -25245, -25226, -25219, -25196, -25187, -25181, -25161, -25148, -25141, -25135, 
                -25130, -25125, -25099, -25098, -25090, -25024, -25012, -25000, -24999, -24995, -24971, -24956, -24951, -24949, -24940, -24932, 
                -24928, -24927, -24923, -24915, -24905, -24903, -24902, -24895, -24885, -24881, -24858, -24852, -24844, -24841, -24749, -24729, 
                -24711, -24708, -24706, -24697, -24682, -24673, -24668, -24660, -24655, -24646, -24642, -24639, -24638, -24634, -24631, -24628, 
                -24618, -24613, -24599, -24594, -24592, -24582, -24508, -24503, -24502, -24489, -24457, -24453, -24450, -24436, -24428, -24420, 
                -24414, -24408, -24398, -24394, -24341, -24340, -24332, -24330, -24326, -24325, -21936, -21926, -21921, -21917, -21910, -21907, 
                -21903, -21902, -21896, -21894, -21890, -21872, -21870, -21679, -21667, -21665, -21659, -21656, -21654, -21652, -21648, -21635, 
                -21622, -21620, -21616, -21605, -21430, -21414, -21390, -21372, -21368, -21362, -21357, -21181, -21173, -21139, -21109, -21102, 
                -20927, -20913, -20902, -20901, -20888, -20877, -20854, -20852, -20851, -20848, -20656, -20641, -20627, -20613, -20607, -20605, 
                -20598, -20594, -20586, -20411, -20405, -20403, -20393, -20384, -20383, -20382, -20345, -20321, -20155, -20132, -20124, -20118, 
                -20088, -19897, -19895, -19867, -19849, -19844, -19833, -19832, -19812, -19647, -19643, -19617, -19604, -19592, -19578, -19573, 
                -19570, -19558, -19384, -19378, -19375, -19344, -19340, -19328, -19301, -19134, -19131, -19128, -19122, -19117, -19105, -19096, 
                -19094, -19090, -19084, -19082, -19072, -19047, -19046, -19042, -18880, -18878, -18872, -18862, -18850, -18840, -18834, -18830, 
                -18824, -18810, -18794, -18621, -18618, -18603, -18599, -18586, -18582, -18565, -18550, -18549, -18546, -18544, -18534, -18363, 
                -18361, -18360, -18314, -18290, -18288, -18284, -18098, -18097, -18077, -18065, -18054, -18027, -18026, -17846, -17843, -17821, 
                -17816, -17811, -17767, -17598, -17597, -17590, -17575, -17574, -17567, -17557, -17556, -17533, -17509, -17298, -17293, -17291, 
                -17269, -17252, -17084, -17064, -17037, -16994, -16781, -16776, -16759, -16758, -16739, -16738, -16570, -16563, -16561, -16543, 
                -16524, -16504, -16485, -16311, -16296, -16293, -16282, -16276, -16268, -16250, -16236, -16229, -16050, -16026, -16025, -16024, 
                -16021, -16019, -16016, -16014, -16008, -16007, -16004, -16002, -15980, -15779, -15767, -15765, -15763, -15755, -15751, -15547, 
                -15537, -15531, -15505, -15483, -15471, -15270, -15254, -15237, -15035, -15005, -14972, -14958, -14953, -14948, -14778, -14777, 
                -14770, -14766, -14745, -14744, -14743, -14737, -14735, -14729, -14692, -14509, -14502, -14500, -14478, -14472, -14269, -14252, 
                -14251, -14242, -14233, -14232, -14220, -14210, -14198, -14183, -14016, -14015, -14013, -14005, -14003, -13999, -13994, -13980, 
                -13978, -13972, -13956, -13943, -13927, -13926, -13758, -13729, -13727, -13706, -13700, -13698, -13695, -13685, -13670, -13664, 
                -13487, -13471, -13456, -13450, -13436, -13433, -13426, -13234, -13232, -13221, -13219, -13215, -13213, -13209, -13207, -13176, 
                -13158, -12986, -12985, -12975, -12974, -12967, -12937, -12930, -12926, -12922, -12901, -12900, -12733, -12719, -12695, -12691, 
                -12685, -12678, -12669, -12668, -12654, -12651, -12644, -12642, -12468, -12464, -12456, -12430, -12415, -12407, -12214, -12211, 
                -12210, -12189, -12182, -12173, -12172, -12166, -12156, -12151, -12143, -12134, -11968, -11952, -11936, -11926, -11918, -11914, 
                -11900, -11899, -11898, -11896, -11894, -11893, -11885, -11878, -11711, -11683, -11650, -11647, -11635, -11619, -11452, -11444, 
                -11425, -11394, -11389, -11387, -11372, -11369, -11363, -11360, -11197, -11191, -11184, -11180, -11179, -11160, -11155, -11153, 
                -11150, -11135, -11132, -11107, -10942, -10924, -10918, -10888, -10886, -10856, -10679, -10674, -10667, -10666, -10659, -10648, 
                -10635, -10633, -10629, -10628, -10626, -10602, -10425, -10398, -10393, -10392, -10381, -10379, -10366, -10363, -10358, -10355, 
                -10348, -10345, -10154, -10153, -10149, -10148, -10147, -10142, -10125, -10118, -10107, -10102, -10101, -10094, -10089, -10066, 
                -10062, -10061, -10057, -10055, -10039, -10036, -10035, -10027, -10025, -10017, -10010, -10002, -9999, -9997, -9988, -9987, 
                -9905, -9887, -9852, -9837, -9830, -9826, -9817, -9813, -9806, -9802, -9800, -9784, -9761, -9744, -9736, -9663, 
                -9655, -9649, -9645, -9633, -9607, -9588, -9580, -9576, -9563, -9551, -9532, -9525, -9523, -9507, -9497, -9474, 
                -9404, -9355, -9352, -9303, -9301, -9295, -9293, -9292, -9259, -9251, -9237, -9229, -9223, -9220, -9133, -9130, 
                -9095, -9086, -9083, -9082, -9077, -9049, -9045, -9043, -9038, -9026, -9025, -9005, -8991, -8989, -8984, -8962, 
                -8887, -8875, -8873, -8856, -8854, -8852, -8846, -8835, -8820, -8815, -8814, -8805, -8804, -8788, -8785, -8779, 
                -8774, -8761, -8754, -8749, -8714, -8713, -8640, -8620, -8616, -8598, -8586, -8579, -8560, -8556, -8554, -8548, 
                -8544, -8526, -8508, -8504, -8500, -8486, -8482, -8469, -8467, -8462, -8452, -8373, -8370, -8366, -8357, -8356, 
                -8350, -8344, -8327, -8326, -8313, -8312, -8306, -8298, -8274, -8262, -8259, -8251, -8241, -8233, -8228, -8226, 
                -8119, -8099, -8095, -8093, -8088, -8087, -8074, -8071, -8069, -8046, -8037, -8035, -8031, -8017, -8013, -7981, 
                -7962, -7949, -7948, -7946, -7869, -7868, -7862, -7854, -7853, -7846, -7836, -7830, -7829, -7820, -7815, -7814, 
                -7813, -7808, -7799, -7792, -7764, -7749, -7741, -7734, -7730, -7718, -7712, -7706, -7695, -7684, -7682, -7612, 
                -7602, -7600, -7592, -7591, -7585, -7575, -7567, -7566, -7561, -7558, -7549, -7531, -7527, -7518, -7495, -7488, 
                -7486, -7483, -7465, -7457, -7437, -7432, -7431, -7429, -7359, -7336, -7334, -7319, -7303, -7293, -7282, -7266, 
                -7265, -7262, -7256, -7245, -7236, -7226, -7216, -7196, -7181, -7102, -7088, -7082, -7075, -7072, -7047, -7023, 
                -7002, -6962, -6951, -6946, -6933, -6924, -6843, -6825, -6821, -6787, -6768, -6765, -6739, -6738, -6730, -6718, 
                -6714, -6665, -6661, -6659, -6587, -6571, -6557, -6556, -6538, -6524, -6523, -6491, -6485, -6462, -6452, -6428, 
                -6406, -6330, -6321, -6277, -6274, -6260, -6259, -6241, -6239, -6197, -6181, -6177, -6160, -6158, -6152, -6148, 
                -6072, -6065, -6051, -6016, -6000, -5994, -5989, -5985, -5980, -5979, -5972, -5959, -5949, -5930, -5918, -5823, 
                -5798, -5754, -5753, -5746, -5744, -5743, -5741, -5735, -5730, -5702, -5680, -5670, -5668, -5664, -5658, -5652, 
                -5645, -5641, -5532, -5531, -5530, -5529, -5523, -5508, -5493, -5490, -5484, -5482, -5478, -5477, -5476, -5440, 
                -5435, -5430, -5428, -5417, -5411, -5396, -5309, -5307, -5300, -5292, -5285, -5277, -5269, -5260, -5243, -5241, 
                -5226, -5221, -5216, -5198, -5197, -5195, -5189, -5188, -5186, -5176, -5159, -5145, -5143, -5132, -5054, -5046, 
                -5043, -5038, -5002, -4990, -4984, -4983, -4976, -4967, -4957, -4955, -4938, -4931, -4930, -4921, -4920, -4915, 
                -4913, -4903, -4902, -4901, -4750, -4743, -4725, -4724, -4723, -4720, -4717, -4709, -4698, -4687, -4686, -4676, 
                -4621, -4620, -4611, -4543, -4523, -4522, -4519, -4507, -4506, -4485, -4479, -4477, -4476, -4474, -4471, -4470, 
                -4458, -4453, -4421, -4410, -4390, -4383, -4368, -4364, -4361, -4279, -4278, -4258, -4257, -4238, -4235, -4220, 
                -4219, -4217, -4213, -4211, -4193, -4190, -4137, -4130, -4114, -4030, -4018, -4016, -4007, -3999, -3978, -3972, 
                -3962, -3952, -3922, -3920, -3903, -3890, -3888, -3882, -3872, -3863, -3862, -3851, -3850, -3847, -3776, -3757, 
                -3743, -3738, -3733, -3726, -3711, -3689, -3672, -3669, -3665, -3660, -3654, -3650, -3647, -3646, -3614, -3498, 
                -3495, -3493, -3483, -3462, -3461, -3441, -3426, -3421, -3394, -3388, -3382, -3371, -3358, -3354, -3339, -3338, 
                -3336, -3263, -3262, -3258, -3245, -3234, -3232, -3221, -3178, -3166, -3137, -3132, -3109, -3090, -2973, -2972, 
                -2971, -2958, -2948, -2946, -2936, -2916, -2905, -2904, -2897, -2848, -2840, -2835, -2819, -2737, -2709, -2708, 
                -2686, -2665, -2650, -2489, -2474, -2455, -2449, -2443, -2418, -2416, -2393, -2385, -2376, -2375, -2371, -2353, 
                -2231, -2226, -2198, -2190, -2170, -2159, -2139, -2133, -2127, -2102, -2096, -2093, -2066, -2064, -2056, -2054, 
                -1981, -1976, -1965, -1956, -1947, -1946, -1928, -1917, -1916, -1915, -1914, -1912, -1910, -1897, -1896, -1713, 
                -1677, -1676, -1673, -1664, -1663, -1653, -1634, -1632, -1468, -1460, -1459, -1442, -1441, -1440, -1433, -1422, 
                -1421, -1416, -1411, -1407, -1403, -1400, -1394, -1386, -1385, -1380, -1216, -1213, -1211, -1210, -1205, -1202, 
                -1201, -1194, -1193, -1177, -1173, -1169, -1168, -1155, -1154, -1145, -1134, -1126, -953, -931, -924, -922, 
                -921, -919, -918, -917, -915, -912, -909, -904, -884, -880, -702, -697, -676, -675, -668, -660, 
                -657, -655, -654, -652, -647, -646, -642, -633, -613
             });
            m_rareDict.Add('Z', new int[] { 
                -32431, -32386, -32353, -32341, -32326, -32320, -32314, -32307, -32304, -32300, -32297, -32262, -32187, -32186, -32154, -32139, 
                -32135, -32130, -32123, -32114, -32113, -32107, -32093, -32073, -32068, -32064, -32055, -32052, -32048, -32018, -32013, -32012, 
                -32007, -31936, -31919, -31914, -31907, -31883, -31868, -31845, -31844, -31827, -31821, -31783, -31747, -31670, -31667, -31644, 
                -31628, -31615, -31586, -31585, -31572, -31570, -31567, -31562, -31560, -31411, -31391, -31366, -31362, -31356, -31351, -31262, 
                -31256, -31240, -31166, -31144, -31118, -31089, -31075, -31069, -31064, -31052, -31051, -31047, -31039, -30998, -30985, -30984, 
                -30901, -30873, -30867, -30848, -30830, -30820, -30804, -30774, -30771, -30764, -30761, -30758, -30634, -30626, -30608, -30596, 
                -30592, -30579, -30553, -30541, -30527, -30516, -30490, -30482, -30470, -30378, -30374, -30370, -30368, -30342, -30338, -30328, 
                -30325, -30314, -30301, -30255, -30252, -30251, -30237, -30217, -30132, -30095, -30092, -30087, -30077, -30076, -30062, -30057, 
                -30052, -30039, -30038, -30003, -30001, -29988, -29985, -29886, -29849, -29841, -29809, -29784, -29781, -29770, -29760, -29626, 
                -29611, -29596, -29595, -29585, -29578, -29574, -29537, -29533, -29531, -29509, -29497, -29451, -29450, -29300, -29292, -29288, 
                -29284, -29280, -29279, -29270, -29267, -29256, -29250, -29223, -29213, -29212, -29207, -29206, -29198, -29192, -29187, -29115, 
                -29100, -29055, -29054, -29047, -29042, -29026, -29020, -29012, -28998, -28994, -28989, -28985, -28967, -28959, -28954, -28952, 
                -28860, -28818, -28799, -28792, -28749, -28741, -28740, -28737, -28733, -28731, -28719, -28715, -28713, -28572, -28538, -28500, 
                -28484, -28472, -28449, -28431, -28336, -28330, -28315, -28304, -28290, -28223, -28218, -28185, -28183, -28176, -28092, -28091, 
                -28072, -28061, -28053, -28050, -28046, -28045, -28032, -28018, -28007, -28001, -27977, -27970, -27964, -27962, -27946, -27941, 
                -27926, -27829, -27828, -27821, -27805, -27799, -27785, -27762, -27758, -27756, -27736, -27733, -27724, -27701, -27691, -27678, 
                -27664, -27663, -27565, -27490, -27468, -27459, -27448, -27432, -27431, -27430, -27429, -27426, -27423, -27411, -27406, -27402, 
                -27305, -27297, -27290, -27271, -27261, -27258, -27257, -27252, -27251, -27250, -27245, -27206, -27200, -27177, -27148, -27141, 
                -27055, -27048, -27038, -27030, -26986, -26984, -26960, -26948, -26937, -26926, -26921, -26918, -26909, -26904, -26898, -26883, 
                -26813, -26810, -26789, -26785, -26780, -26758, -26748, -26729, -26717, -26708, -26705, -26704, -26695, -26691, -26687, -26686, 
                -26672, -26658, -26555, -26530, -26520, -26507, -26502, -26479, -26473, -26457, -26442, -26431, -26418, -26417, -26410, -26399, 
                -26393, -26295, -26283, -26268, -26263, -26252, -26247, -26216, -26205, -26191, -26185, -26179, -26175, -26151, -26137, -26130, 
                -26004, -26000, -25996, -25991, -25973, -25953, -25898, -25896, -25879, -25870, -25787, -25777, -25758, -25756, -25755, -25753, 
                -25750, -25734, -25727, -25710, -25700, -25679, -25618, -25526, -25507, -25467, -25443, -25417, -25415, -25398, -25391, -25386, 
                -25382, -25363, -25346, -25254, -25234, -25231, -25230, -25220, -25213, -25210, -25189, -25188, -25186, -25143, -25136, -25128, 
                -25119, -25106, -25093, -25003, -24996, -24966, -24939, -24925, -24913, -24896, -24892, -24890, -24870, -24869, -24867, -24861, 
                -24853, -24842, -24836, -24767, -24753, -24736, -24690, -24681, -24657, -24624, -24615, -24612, -24603, -24495, -24492, -24487, 
                -24435, -24434, -24427, -24423, -24413, -24388, -24346, -24338, -24336, -21948, -21937, -21920, -21919, -21918, -21914, -21888, 
                -21630, -21623, -21417, -21397, -21373, -21359, -21347, -21183, -21178, -21167, -21150, -21134, -21123, -21119, -21103, -20919, 
                -20916, -20857, -20843, -20662, -20653, -20651, -20649, -20625, -20610, -20608, -20589, -20585, -20391, -20369, -20349, -20331, 
                -20327, -20326, -20324, -20160, -20149, -20140, -20117, -20112, -20106, -20105, -20101, -20089, -20086, -20079, -20064, -19902, 
                -19896, -19888, -19869, -19868, -19839, -19814, -19810, -19646, -19644, -19639, -19627, -19623, -19612, -19600, -19560, -19553, 
                -19339, -19322, -19316, -19304, -19300, -19297, -19111, -19086, -19081, -19070, -19067, -19055, -19051, -19045, -19043, -18879, 
                -18873, -18849, -18848, -18842, -18833, -18831, -18819, -18818, -18813, -18809, -18808, -18805, -18790, -18789, -18786, -18622, 
                -18610, -18609, -18601, -18573, -18551, -18529, -18366, -18343, -18338, -18323, -18308, -18289, -18280, -18089, -18075, -18072, 
                -18071, -18050, -18048, -18047, -18042, -18036, -17854, -17840, -17830, -17820, -17814, -17806, -17781, -17776, -17587, -17586, 
                -17583, -17581, -17566, -17561, -17555, -17551, -17545, -17543, -17532, -17525, -17518, -17504, -17338, -17328, -17308, -17300, 
                -17295, -17284, -17275, -17272, -17264, -17262, -17259, -17255, -17249, -17087, -17077, -17075, -17069, -17062, -17022, -17020, 
                -16995, -16829, -16819, -16807, -16804, -16800, -16792, -16790, -16788, -16780, -16763, -16751, -16741, -16576, -16569, -16560, 
                -16555, -16542, -16538, -16534, -16533, -16522, -16517, -16510, -16491, -16490, -16489, -16481, -16314, -16278, -16264, -16263, 
                -16254, -16253, -16238, -16234, -16061, -16051, -16034, -16018, -16015, -15981, -15805, -15782, -15772, -15760, -15758, -15756, 
                -15718, -15551, -15548, -15515, -15512, -15503, -15499, -15497, -15461, -15286, -15269, -15255, -15240, -15224, -15216, -15200, 
                -15032, -15029, -15026, -14975, -14764, -14761, -14734, -14726, -14714, -14713, -14705, -14701, -14691, -14688, -14527, -14512, 
                -14492, -14490, -14456, -14449, -14443, -14266, -14246, -14215, -14214, -14196, -14190, -14176, -14011, -13998, -13954, -13951, 
                -13939, -13936, -13921, -13737, -13719, -13718, -13704, -13498, -13483, -13476, -13465, -13461, -13459, -13428, -13409, -13408, 
                -13195, -13157, -13156, -12987, -12983, -12964, -12948, -12940, -12906, -12683, -12681, -12680, -12640, -12459, -12458, -12448, 
                -12444, -12435, -12404, -12402, -12401, -12393, -12219, -12201, -12200, -12196, -12175, -12168, -12165, -12159, -12150, -12144, 
                -12137, -12136, -12129, -11954, -11939, -11934, -11915, -11693, -11670, -11656, -11653, -11624, -11618, -11441, -11420, -11416, 
                -11398, -11190, -11182, -11172, -11171, -11170, -11168, -11167, -11157, -11152, -11148, -11141, -11139, -11136, -11113, -10940, 
                -10935, -10905, -10883, -10879, -10875, -10870, -10869, -10868, -10866, -10687, -10678, -10677, -10668, -10655, -10642, -10627, 
                -10618, -10615, -10611, -10607, -10603, -10598, -10593, -10431, -10429, -10422, -10415, -10411, -10407, -10396, -10384, -10375, 
                -10373, -10364, -10349, -10346, -10338, -10156, -10155, -10135, -10127, -10095, -10081, -10080, -10060, -10042, -10029, -10005, 
                -9991, -9919, -9916, -9895, -9892, -9889, -9885, -9878, -9877, -9875, -9860, -9858, -9850, -9843, -9839, -9833, 
                -9832, -9829, -9827, -9814, -9794, -9780, -9762, -9659, -9650, -9647, -9637, -9631, -9626, -9622, -9609, -9597, 
                -9589, -9586, -9569, -9565, -9553, -9542, -9535, -9534, -9519, -9512, -9510, -9506, -9502, -9496, -9492, -9490, 
                -9400, -9398, -9394, -9362, -9358, -9356, -9350, -9344, -9342, -9339, -9334, -9323, -9319, -9317, -9312, -9308, 
                -9307, -9291, -9288, -9254, -9222, -9131, -9129, -9113, -9087, -9080, -9058, -9018, -9007, -8981, -8977, -8890, 
                -8881, -8877, -8876, -8861, -8860, -8859, -8851, -8847, -8844, -8843, -8841, -8810, -8801, -8793, -8753, -8728, 
                -8636, -8632, -8630, -8618, -8606, -8602, -8588, -8575, -8572, -8567, -8564, -8563, -8535, -8502, -8487, -8470, 
                -8456, -8451, -8384, -8372, -8358, -8345, -8340, -8319, -8287, -8284, -8278, -8276, -8264, -8250, -8219, -8210, 
                -8208, -8206, -8203, -8199, -8198, -8104, -8076, -8075, -8063, -8053, -8051, -8039, -8033, -7943, -7939, -7871, 
                -7867, -7863, -7856, -7844, -7842, -7827, -7821, -7789, -7784, -7783, -7772, -7745, -7732, -7727, -7722, -7705, 
                -7614, -7557, -7544, -7529, -7524, -7521, -7505, -7481, -7475, -7451, -7436, -7360, -7356, -7348, -7346, -7341, 
                -7328, -7301, -7290, -7289, -7281, -7241, -7204, -7093, -7087, -7061, -7045, -7030, -7029, -7003, -7000, -6985, 
                -6978, -6973, -6925, -6848, -6842, -6833, -6832, -6829, -6823, -6809, -6772, -6770, -6759, -6742, -6719, -6715, 
                -6679, -6677, -6589, -6578, -6574, -6573, -6540, -6527, -6526, -6514, -6505, -6494, -6488, -6447, -6436, -6432, 
                -6429, -6419, -6417, -6405, -6331, -6311, -6302, -6271, -6265, -6262, -6251, -6233, -6213, -6204, -6201, -6187, 
                -6182, -6178, -6077, -6063, -6060, -6058, -6043, -6038, -6003, -6001, -5997, -5988, -5968, -5962, -5940, -5938, 
                -5937, -5929, -5927, -5916, -5915, -5897, -5890, -5824, -5821, -5812, -5811, -5780, -5778, -5719, -5717, -5701, 
                -5690, -5683, -5673, -5646, -5644, -5639, -5636, -5522, -5497, -5470, -5456, -5451, -5442, -5437, -5410, -5409, 
                -5406, -5284, -5278, -5270, -5261, -5253, -5232, -5229, -5227, -5225, -5178, -5168, -5167, -5165, -5163, -5154, 
                -5142, -5127, -5013, -4986, -4960, -4935, -4924, -4883, -4879, -4877, -4875, -4870, -4728, -4697, -4675, -4668, 
                -4658, -4648, -4643, -4631, -4618, -4497, -4496, -4488, -4475, -4429, -4416, -4408, -4389, -4359, -4271, -4237, 
                -4210, -4189, -4179, -4155, -4129, -4115, -4111, -4108, -4106, -4011, -4004, -3988, -3966, -3956, -3947, -3935, 
                -3918, -3910, -3887, -3868, -3866, -3861, -3855, -3749, -3748, -3741, -3727, -3724, -3722, -3718, -3715, -3701, 
                -3690, -3687, -3671, -3656, -3618, -3608, -3509, -3502, -3479, -3469, -3460, -3455, -3450, -3442, -3434, -3424, 
                -3417, -3386, -3378, -3368, -3259, -3241, -3228, -3210, -3176, -3154, -3153, -3133, -3127, -3126, -3120, -3107, 
                -3099, -3097, -3088, -3008, -3007, -2999, -2967, -2947, -2910, -2906, -2895, -2890, -2889, -2862, -2859, -2856, 
                -2845, -2838, -2828, -2827, -2825, -2820, -2729, -2715, -2714, -2690, -2684, -2667, -2663, -2655, -2651, -2619, 
                -2599, -2596, -2592, -2578, -2574, -2572, -2562, -2494, -2481, -2478, -2466, -2464, -2458, -2421, -2397, -2396, 
                -2377, -2369, -2359, -2323, -2314, -2235, -2230, -2218, -2209, -2203, -2183, -2169, -2164, -2161, -2130, -2086, 
                -2074, -2050, -1984, -1964, -1949, -1945, -1930, -1918, -1904, -1898, -1688, -1672, -1661, -1652, -1467, -1424, 
                -1418, -1412, -1387, -1378, -1214, -1212, -1166, -1148, -1130, -944, -901, -899, -898, -891, -888, -871, 
                -689, -685, -672, -670, -650, -639
             });
        }
    }


    /// <summary>
    /// 汉字拓展
    /// </summary>
    public static class ChineseExtensions
    {
        #region 转换汉字为拼音首字母
        /// <summary> 转换一串汉字到其拼音首字母组成的字符串
        /// </summary>
        /// <param name="strChinese">多个汉字字符串</param>
        /// <returns>string</returns>
        /*  调用：
            IceCommonTools.ConvertTo.ChineseFirstSpell("我是地球人");
         */
        public static string ToFirstChineseSpell(this string strChinese)
        {

            int len = strChinese.Length;

            string strResult = "";

            for (int i = 0; i < len; i++)
            { strResult += SpellFirstChinese(strChinese.Substring(i, 1)); }

            return strResult;
        }
        private static string SpellFirstChinese(string strOneChinese)
        {

            byte[] arrCN = Encoding.Default.GetBytes(strOneChinese);

            if (arrCN.Length > 1)
            {
                int area = (short)arrCN[0];
                int pos = (short)arrCN[1];
                int code = (area << 8) + pos;
                int[] areacode = { 45217, 45253, 45761, 46318, 46826, 47010, 47297, 47614, 48119, 48119, 49062, 49324, 49896, 50371, 50614, 50622, 50906, 51387, 51446, 52218, 52698, 52698, 52698, 52980, 53689, 54481 };

                for (int i = 0; i < 26; i++)
                {
                    int max = 55290;

                    if (i != 25) max = areacode[i + 1];

                    if (areacode[i] <= code && code < max)
                    { return Encoding.Default.GetString(new byte[] { (byte)(65 + i) }); }
                }

                return "";
            }
            else
                return strOneChinese;
        }

        /// <summary> 
        /// 取单个字符的拼音声母 
        /// </summary> 
        /// <param name="c">要转换的单个汉字</param> 
        /// <returns>拼音声母</returns> 
        public static string GetPYChar(string c)
        {
            byte[] array = new byte[2];
            array = System.Text.Encoding.Default.GetBytes(c);
            int i = (short)(array[0] - '\0') * 256 + ((short)(array[1] - '\0'));
            if (i < 0xB0A1) return "*";
            if (i < 0xB0C5) return "A";
            if (i < 0xB2C1) return "B";
            if (i < 0xB4EE) return "C";
            if (i < 0xB6EA) return "D";
            if (i < 0xB7A2) return "E";
            if (i < 0xB8C1) return "F";
            if (i < 0xB9FE) return "G";
            if (i < 0xBBF7) return "H";
            if (i < 0xBFA6) return "G";
            if (i < 0xC0AC) return "K";
            if (i < 0xC2E8) return "L";
            if (i < 0xC4C3) return "M";
            if (i < 0xC5B6) return "N";
            if (i < 0xC5BE) return "O";
            if (i < 0xC6DA) return "P";
            if (i < 0xC8BB) return "Q";
            if (i < 0xC8F6) return "R";
            if (i < 0xCBFA) return "S";
            if (i < 0xCDDA) return "T";
            if (i < 0xCEF4) return "W";
            if (i < 0xD1B9) return "X";
            if (i < 0xD4D1) return "Y";
            if (i < 0xD7FA) return "Z";
            return "*";
        }
        #endregion

        #region 转换汉字为拼音
        private static int[] pyvalue = new int[]{-20319,-20317,-20304,-20295,-20292,-20283,-20265,-20257,-20242,-20230,-20051,-20036,-20032,-20026,      
                -20002,-19990,-19986,-19982,-19976,-19805,-19784,-19775,-19774,-19763,-19756,-19751,-19746,-19741,-19739,-19728,      
                -19725,-19715,-19540,-19531,-19525,-19515,-19500,-19484,-19479,-19467,-19289,-19288,-19281,-19275,-19270,-19263,      
                -19261,-19249,-19243,-19242,-19238,-19235,-19227,-19224,-19218,-19212,-19038,-19023,-19018,-19006,-19003,-18996,      
                -18977,-18961,-18952,-18783,-18774,-18773,-18763,-18756,-18741,-18735,-18731,-18722,-18710,-18697,-18696,-18526,      
                -18518,-18501,-18490,-18478,-18463,-18448,-18447,-18446,-18239,-18237,-18231,-18220,-18211,-18201,-18184,-18183,      
                -18181,-18012,-17997,-17988,-17970,-17964,-17961,-17950,-17947,-17931,-17928,-17922,-17759,-17752,-17733,-17730,      
                -17721,-17703,-17701,-17697,-17692,-17683,-17676,-17496,-17487,-17482,-17468,-17454,-17433,-17427,-17417,-17202,      
                -17185,-16983,-16970,-16942,-16915,-16733,-16708,-16706,-16689,-16664,-16657,-16647,-16474,-16470,-16465,-16459,      
                -16452,-16448,-16433,-16429,-16427,-16423,-16419,-16412,-16407,-16403,-16401,-16393,-16220,-16216,-16212,-16205,      
                -16202,-16187,-16180,-16171,-16169,-16158,-16155,-15959,-15958,-15944,-15933,-15920,-15915,-15903,-15889,-15878,      
                -15707,-15701,-15681,-15667,-15661,-15659,-15652,-15640,-15631,-15625,-15454,-15448,-15436,-15435,-15419,-15416,      
                -15408,-15394,-15385,-15377,-15375,-15369,-15363,-15362,-15183,-15180,-15165,-15158,-15153,-15150,-15149,-15144,      
                -15143,-15141,-15140,-15139,-15128,-15121,-15119,-15117,-15110,-15109,-14941,-14937,-14933,-14930,-14929,-14928,      
                -14926,-14922,-14921,-14914,-14908,-14902,-14894,-14889,-14882,-14873,-14871,-14857,-14678,-14674,-14670,-14668,      
                -14663,-14654,-14645,-14630,-14594,-14429,-14407,-14399,-14384,-14379,-14368,-14355,-14353,-14345,-14170,-14159,      
                -14151,-14149,-14145,-14140,-14137,-14135,-14125,-14123,-14122,-14112,-14109,-14099,-14097,-14094,-14092,-14090,      
                -14087,-14083,-13917,-13914,-13910,-13907,-13906,-13905,-13896,-13894,-13878,-13870,-13859,-13847,-13831,-13658,      
                -13611,-13601,-13406,-13404,-13400,-13398,-13395,-13391,-13387,-13383,-13367,-13359,-13356,-13343,-13340,-13329,      
                -13326,-13318,-13147,-13138,-13120,-13107,-13096,-13095,-13091,-13076,-13068,-13063,-13060,-12888,-12875,-12871,      
                -12860,-12858,-12852,-12849,-12838,-12831,-12829,-12812,-12802,-12607,-12597,-12594,-12585,-12556,-12359,-12346,      
                -12320,-12300,-12120,-12099,-12089,-12074,-12067,-12058,-12039,-11867,-11861,-11847,-11831,-11798,-11781,-11604,      
                -11589,-11536,-11358,-11340,-11339,-11324,-11303,-11097,-11077,-11067,-11055,-11052,-11045,-11041,-11038,-11024,      
                -11020,-11019,-11018,-11014,-10838,-10832,-10815,-10800,-10790,-10780,-10764,-10587,-10544,-10533,-10519,-10331,      
                -10329,-10328,-10322,-10315,-10309,-10307,-10296,-10281,-10274,-10270,-10262,-10260,-10256,-10254
    };

        private static string[] pystr = new string[]{"A","Ai","An","Ang","Ao","Ba","Bai","Ban","Bang","Bao","Bei","Ben","Beng","Bi","Bian","Biao",       
            "Bie","Bin","Bing","Bo","Bu","Ca","Cai","Can","Cang","Cao","Ce","Ceng","Cha","Chai","Chan","Chang","Chao","Che","Chen",      
            "Cheng","Chi","Chong","Chou","Chu","Chuai","Chuan","Chuang","Chui","Chun","Chuo","Ci","Cong","Cou","Cu","Cuan","Cui",      
            "Cun","Cuo","Da","Dai","Dan","Dang","Dao","De","Deng","Di","Dian","Diao","Die","Ding","Diu","Dong","Dou","Du","Duan",      
            "Dui","Dun","Duo","E","En","Er","Fa","Fan","Fang","Fei","Fen","Feng","Fo","Fou","Fu","Ga","Gai","Gan","Gang","Gao",      
            "Ge","Gei","Gen","Geng","Gong","Gou","Gu","Gua","Guai","Guan","Guang","Gui","Gun","Guo","Ha","Hai","Han","Hang",      
            "Hao","He","Hei","Hen","Heng","Hong","Hou","Hu","Hua","Huai","Huan","Huang","Hui","Hun","Huo","Ji","Jia","Jian",      
            "Jiang","Jiao","Jie","Jin","Jing","Jiong","Jiu","Ju","Juan","Jue","Jun","Ka","Kai","Kan","Kang","Kao","Ke","Ken",      
            "Keng","Kong","Kou","Ku","Kua","Kuai","Kuan","Kuang","Kui","Kun","Kuo","La","Lai","Lan","Lang","Lao","Le","Lei",      
            "Leng","Li","Lia","Lian","Liang","Liao","Lie","Lin","Ling","Liu","Long","Lou","Lu","Lv","Luan","Lue","Lun","Luo",      
            "Ma","Mai","Man","Mang","Mao","Me","Mei","Men","Meng","Mi","Mian","Miao","Mie","Min","Ming","Miu","Mo","Mou","Mu",      
            "Na","Nai","Nan","Nang","Nao","Ne","Nei","Nen","Neng","Ni","Nian","Niang","Niao","Nie","Nin","Ning","Niu","Nong",      
            "Nu","Nv","Nuan","Nue","Nuo","O","Ou","Pa","Pai","Pan","Pang","Pao","Pei","Pen","Peng","Pi","Pian","Piao","Pie",      
            "Pin","Ping","Po","Pu","Qi","Qia","Qian","Qiang","Qiao","Qie","Qin","Qing","Qiong","Qiu","Qu","Quan","Que","Qun",      
            "Ran","Rang","Rao","Re","Ren","Reng","Ri","Rong","Rou","Ru","Ruan","Rui","Run","Ruo","Sa","Sai","San","Sang",      
            "Sao","Se","Sen","Seng","Sha","Shai","Shan","Shang","Shao","She","Shen","Sheng","Shi","Shou","Shu","Shua",      
            "Shuai","Shuan","Shuang","Shui","Shun","Shuo","Si","Song","Sou","Su","Suan","Sui","Sun","Suo","Ta","Tai",      
            "Tan","Tang","Tao","Te","Teng","Ti","Tian","Tiao","Tie","Ting","Tong","Tou","Tu","Tuan","Tui","Tun","Tuo",       
            "Wa","Wai","Wan","Wang","Wei","Wen","Weng","Wo","Wu","Xi","Xia","Xian","Xiang","Xiao","Xie","Xin","Xing",       
            "Xiong","Xiu","Xu","Xuan","Xue","Xun","Ya","Yan","Yang","Yao","Ye","Yi","Yin","Ying","Yo","Yong","You",       
            "Yu","Yuan","Yue","Yun","Za","Zai","Zan","Zang","Zao","Ze","Zei","Zen","Zeng","Zha","Zhai","Zhan","Zhang",      
            "Zhao","Zhe","Zhen","Zheng","Zhi","Zhong","Zhou","Zhu","Zhua","Zhuai","Zhuan","Zhuang","Zhui","Zhun","Zhuo",      
            "Zi","Zong","Zou","Zu","Zuan","Zui","Zun","Zuo"
    };

        /// <summary> 转换一串汉字到其拼音组成的字符串
        /// </summary>
        /// <param name="strChinese">多个汉字字符串</param>
        /// <returns>string</returns>
        /*  调用：
            IceCommonTools.ConvertTo.ChineseSpell("我是地球人");
         */
        public static string ToChineseSpell(this string strChinese)
        {
            byte[] array = new byte[2];
            string strReturn = "";
            char[] nowchar = strChinese.ToCharArray();
            for (int j = 0; j < nowchar.Length; j++)
            {
                array = System.Text.Encoding.Default.GetBytes(nowchar[j].ToString());
                if ((int)(array[0]) <= 160 && (int)(array[0]) >= 0)
                {
                    strReturn += nowchar[j];
                }
                else
                {
                    for (int i = (pyvalue.Length - 1); i >= 0; i--)
                    {
                        if (pyvalue[i] <= (int)(array[0]) * 256 + (int)(array[1]) - 65536)
                        {
                            strReturn += pystr[i];
                            break;
                        }
                    }
                }
            }
            return strReturn;
        }
        #endregion
    }


